Динамическая маршрутизация урлов в 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')
Вернуться на верх