Как 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".

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