Django regex не работает при добавлении других веток в url

Я полный новичок в Django, и я столкнулся с проблемой при попытке установить url для каждой "комнаты". Вот код:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^home/$', views.home, name='home'),
    url(r'^room/<str:pk>/$', views.room, name='room'),

]

Все работало отлично, пока я не добавил /<str:pk>/$. Я также добавил этот код в раздел views.py:

def room(request,pk):
    return render(request, 'base/room.html')

Однако я все еще получаю ошибку при загрузке веб-сайта. Изображение сообщения об ошибке

Кто-то знает, как заставить его работать?

  1. Во-первых, как сказано в комментариях, вы должны поставить pk в url и следовать этому:

    http://127.0.0.1:8000/room/1/
    
  2. Затем, убедитесь, что у вас есть хотя бы один объект Room в базе данных, иначе url не будет активным.

  3. И последнее, это должно быть скорее <int:pk> чем str, потому что я считаю, что ваш pk это классический id как число. Итак, урлы:

    urlpatterns = [
        ...
        url(r'^room/<int:pk>/$', views.room, name='room'),
    
    ]
    

Просто заменил /<str:pk>/$ на /(?P<pk>\d+)/$', views.room, name='room'), и все получилось отлично !

Вернуться на верх