Как выполняется класс представления Django? - PullRequest
0 голосов
/ 21 марта 2019

У меня простой вопрос.Как исполняемый класс определяет views.py?Например, если у меня есть путь, определенный следующим образом, я предполагаю, что фрагмент 'views.PostListView.as_view ()' выполняет PostListView, определенный в views.py.Я прав?

urlpatterns = [
path('', views.PostListView.as_view(), name='post_list'),
path('about/', views.AboutView.as_view(), name='about'),
path('post/<int:pk>', views.PostDetailView.as_view(), name='post_detail'),

]

1 Ответ

1 голос
/ 21 марта 2019

Если вы посмотрите на https://github.com/django/django/blob/master/django/views/generic/base.py (который является базовым классом View для универсальных представлений, от которого обычно наследуются все ваши другие представления), as_view определяется как класс / статический метод базового класса представления,и он, в частности, возвращает функцию view (def view(request, *args, **kwargs)), которая, в свою очередь, принимает объект запроса, а затем несколько дополнительных аргументов args / kwargs.Эта функция просмотра - то, что передается в urlpatterns.Когда от пользователя поступает реальный запрос, Django просматривает urlpatterns до тех пор, пока не найдет совпадение, а затем передаст объект запроса и другую информацию фактической функции представления (чтобы он выполнялся один раз за соответствующий запрос).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...