Как Django узнает, что нужно вызвать индекс?
Я только начал изучать Django и немного запутался. Я следую официальной документации и вот код:
mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
polls/views.py
from django.http import HttpResponse
from django.conf import settings
from django.shortcuts import render
from django.views import View
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
Меня в основном смущает то, что если я добавлю больше функций в polls/views.py, как использование inclde('polls.urls') будет знать, что я хочу вызвать функцию index или какую-то другую функцию?
Ссылка на страницу документации, которую я просматриваю: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
По сути, он строит список путей (строк), которые он пытается построить, а затем найти тот, который вы хотели
поэтому пути в опросах для ""
и foobar
приведут к тому, что django попытается сопоставить их со следующими урлами
polls/
polls/foobar
Полный путь для views.index
- это 'polls/' + ''
и, следовательно, 'polls/'
, поэтому он добавляет эти два пути.
Если вы сделаете дополнительный путь:
# polls/urls.py
urlpatterns = [
path('', views.index, name='index')
path('foo/', views.other_view, name='other-view')
]
то шаблон пути будет 'polls/'+'foo/' = 'polls/foo/'
, поэтому он будет различать два варианта.
Если вы таким образом посетите polls/
, то первый путь совпадет, и таким образом "fire" index
. Если вы посетите polls/foo
, то other-view
будет "fire".