我正在学习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”类的实例是什么?
答案 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()
方法。