Джанго не может быть достигнуто через параметризованный URL - PullRequest
0 голосов
/ 08 октября 2019

Привет сообщество StackOverflow,

В настоящее время я учусь использовать библиотеку Django в сочетании с Python. Тем не менее, я столкнулся с некоторыми проблемами, которые как-то странно. Моя ситуация следующая. У меня есть проект под названием «животные», который является основой приложения Django. Мое приложение называется "опросы". Затем я определил следующие представления:

polls / views.py

from django.shortcuts import render
from django.http import HttpResponse

def animals(request, animal_id):
    return HttpResponse("%s" % animal_id)

def index(request):
    return HttpResponse('Hello world')

Пока все хорошо. К сожалению, я не могу сказать то же самое о urlpatterns.

polls / urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.index,name='index'),
    # Redirects to localhost:8000/polls/<animal_id>
    path('<int:animal_id>/',views.animals,name='animals')    
]

Всякий раз, когда я хочу перейти на URL "localhost: 8000/ polls / 10 / "Django напоминает мне о том факте, что URL-адрес не принимается приложением, и в моем браузере возникает ошибка 404. Я что-то здесь упускаю?

ОБНОВЛЕНИЕ

Мне удалось решить проблему, исправив довольно тривиальную ошибку. Хотя polls / urls.py был в порядке, проблема заключалась в файле animals / urls.py . Этот файл выглядел так:

animals / urls.py

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

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

Как можно видеть, путь "опросов" не заканчивается символом "/"подписать. Это указывает Django, что мой желаемый маршрут будет localhost: 8000 / polls где любое целое число, которое я добавлю к URL. Тем не менее, вы должны добавить косую черту в конце. В противном случае Django не будет работать должным образом.

...