如何创建从基于类的视图创建的实例

时间:2017-11-10 13:24:48

标签: django

我正在学习Django基于类的视图。 我不明白从类Views

创建的实例是什么

例如:

from django.http import HttpResponse
from django.views import View

# views.py
class MyView(View):
    def get(self, request):
        # <view logic>
        return HttpResponse('result')
# urls.py
from django.conf.urls import url
from myapp.views import MyView

urlpatterns = [
    url(r'^about/$', MyView.as_view()),
]

在此请求和响应过程中,“MyView”类的实例是什么?

1 个答案:

答案 0 :(得分:1)

虽然你的问题不是很明确,但我认为我得到了你的要求:

查看url()方法的源代码:

def url(regex, view, kwargs=None, name=None):
      if isinstance(view, (list, tuple)):
          # For include(...) processing.
          urlconf_module, app_name, namespace = view
          return RegexURLResolver(
              regex, urlconf_module, kwargs, 
              app_name=app_name, namespace=namespace
          )
      ...

查看as_view()方法文档:

  

返回一个可调用的视图,该视图接收请求并返回响应:

response = MyView.as_view()(request)
     

返回的视图具有view_class和view_initkwargs属性     在请求/响应周期中调用视图时,会将HttpRequest分配给视图的请求属性。

因此,因为您传递了url方法MyView.as_view()参数,所以当请求对象通过时,您将向实例化 MyView类提供指令到url()方法。