Django Метод просмотра списка - PullRequest
1 голос
/ 15 апреля 2020

В django> 2 .0 есть класс обработчика ListView

мой код:

from django.urls import path
from . import views 

urlpatterns = [
    # post views
    path('', views.post_list, name='post_list'),
    # path('', views.PostListView.as_view(), name='post_list'),

В исходном коде django:

 @classonlymethod
    def as_view(cls, **initkwargs):
        """Main entry point for a request-response process."""
        ...........

        def view(request, *args, **kwargs):
            self = cls(**initkwargs)
          ...........................
        update_wrapper(view, cls.dispatch, assigned=())
        return view

views.post_list - простая функция в представлениях модуля

views.PostListView.as_view () - модуль (представления) -> класс, унаследованный от ListView (PostList) -> метод класса из ListView - as_view ()

Почему он пишется в скобках?

1 Ответ

0 голосов
/ 15 апреля 2020

Почему написано в скобках?

Поскольку MyListView.as_view будет не обрабатывать запросы. Действительно, эта функция будет возвращать функцию view, а , которая view, является функцией, которая будет действовать как обработчик для представления.

.as_view() выполнит некоторые проверки, например, что вы не передали параметр get или post в .as_view и т. Д. c.

Когда запрос запускается, представление будет выполнен, это создаст объект ListView с cls(**initkwargs), затем вызовет .setup(request, args, kwargs), чтобы установить объекты request, args и kwargs, и в конечном итоге будет использовать .dispatch(request, *args, **kwargs), чтобы позволить представлению класса обработайте запрос и верните ответ HTTP.

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