Динамическая маршрутизация урлов в Django не работает
динамическая маршрутизация url в post не работает. он работает правильно без динамического url, но показывает Page not found (404) Метод запроса: GET ошибка
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index ,name='index'),
path('count', views.count ,name='count'),
path('register', views.register ,name='register'),
path('login', views.login ,name='login'),
path('logout',views.logout , name='logout'),
path('post/<str:pk>/', views.post, name='post')
]
views.py
from django.shortcuts import render , redirect
from django.http import HttpResponse
from .models import Feature
from django.contrib.auth.models import User, auth
from django.contrib import messages
# Create your views here.
def post(request,pk):
return render(request,'post.html',{'pk': pk})
post.html
<h1>the value of pk is {{pk}}</h1>
Что именно вы имеете в виду под "...он работает правильно без динамического url..."? Где и как вы попадаете на страницу, когда она работает , и когда она не работает ?
Что происходит, когда вы посещаете /post/this_is_my_pk/, другими словами, предполагая, что вы установили все стандартным образом, http://127.0.0.1:8000/post/this_is_my_pk/?
Ваш post.html может привести вас к правильному пути, если вы включите путь, используя язык шаблонов django, как это:
<h1>the value of pk is {{pk}}</h1>
<a href="{% url 'post' pk %}">A link to my post page</a>
Это предполагает, что вы определили строковое поле в качестве первичного ключа в вашей модели. Обычно, pk - это целое число, которое django автоматически генерирует, когда вы определяете свою модель. Если pk является целым числом, то вам нужно изменить ваш путь:
path('post/<int:pk>/', views.post, name='post')