Страница не найдена (404): Джанго не может найти путь - PullRequest
0 голосов
/ 27 августа 2018

Я не понимаю, почему я получаю ошибку 4040, в то время как кажется, что я все правильно защищал. В классе модели Ticket экземпляры сохранены в базе данных, поэтому существует также pk от 1 до 5. Шаблон html является самым простым из возможных, просто чтобы выяснить, почему django не может получить и отобразить запрошенный экземпляр. Обратите внимание, что я вижу экземпляры на странице admin, а также другие пути, такие как добавление нового тикета и т. Д., Работают нормально. Любая помощь приветствуется:

путь / страница, которую я пытаюсь получить:

http://127.0.0.1:8000/ticket/1/

приложение: urls.py

from . import views

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

проект: urls.py

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('mmrapp.urls')), 
]

views.py

def ticket_detail(request, pk):
    ticket=get_object_or_404(Ticket,pk=pk)
    return render(request,'mmrapp/ticket_detail.html',{'ticket':ticket})

HTML

{% extends 'mmrapp/__l_single_column.html' %}
{% load static %}

{% block main_col %}
    <div class="ticket">
        <h2>Ticket: {{ticket.pk}}</h2>
    </div>  

{% endblock main_col %}

1 Ответ

0 голосов
/ 27 августа 2018

Как я знаю, синтаксис <int:pk> доступен только через функцию path ( введено в Django 2.0), но не url, поэтому вам следует использовать функцию path или отказаться от использования этой функции. Синтаксис и переключиться на старый регулярное выражение:

url(r'ticket/(?P<pk>\d+)/', views.ticket_detail, name='ticket_detail')  

Также вам нужно преобразовать параметр pk в вашем представлении в int, так как все параметры, захваченные регулярным выражением, являются строками.

...