Почему мой браузер продолжает перенаправлять на индекс, а не на представления?

#python #django

#python #django

Вопрос:

Работа с Python 2.7 и Django 1.1.

Пытаясь заставить этот код из «Написания вашего первого приложения Django» работать, я понятия не имею, что я делаю не так.

pollsurls.py:

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

    urlpatterns = [
        url(r'^', views.index, name='index'),
        url(r'^<int:question_id>/$', views.detail, name='detail'),
        url(r'^<int:question_id>/results/$', views.results, name='results'),
        url(r'^<int:question_id>/vote/$', views.vote, name='vote'),
    ]
  

mysiteurls.py:

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

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

Пожалуйста, дайте мне знать, если мне не хватает какого-либо необходимого кода для предоставления контекста?

Комментарии:

1. Вам действительно следует отойти от Django 1.x, он уже некоторое время не поддерживается.

Ответ №1:

В django 1.11 url(r'^', views.index, name='index'), соответствует любому URL-адресу, который содержит регулярное выражение ^ (т.Е. Начало строки). Поскольку любая строка содержит начало, это будет соответствовать каждой строке.

Вы можете либо перейти '^' к концу, чтобы он соответствовал только URL-адресам, которые не соответствуют никакому другому пути, либо использовать '^$' (т. Е. Начало строки, за которым сразу следует конец строки), чтобы избежать совпадения путей, которые вы не хотите сопоставлять.