Man*_*edi 7 python django python-2.7 django-1.7
我正在开发一个应用程序,其中我创建了一个泛型ListView.现在,在我定义该视图时urls.py,我从文档中读到了我需要使用该as_view()方法,如下所示:
from django.conf.urls import patterns, include, url
from .views import BlogIndex
urlpatterns = patterns(
'',
url(r'^$', BlogIndex.as_view(), name="index"),
)
Run Code Online (Sandbox Code Playgroud)
现在,我真的不明白文档对这个方法的看法.有人能否对这个概念有所了解?
Rah*_*pta 18
在基于类的视图中,您必须调用as_view()函数以便返回一个可调用的视图,该视图接受一个request并且在通用视图的情况下返回response. 它作为请求 - 响应周期中的主要入口点.
as_view是将我的MyView类与其url 连接的函数(类方法).
来自django docs:
classmethod as_view(**initkwargs)
返回一个可调用的视图,该视图接收请求并返回响应:
您不能像在普通的基于函数的视图中那样使用基于类的视图.
BlogIndex(request) # can't do this in case of CBVs
Run Code Online (Sandbox Code Playgroud)
如果您希望CBV正常运行,上述代码无效.为此,您需要提供一个可调用的视图,然后将请求传递给它.例如:
response = MyView.as_view()(request) # valid way
Run Code Online (Sandbox Code Playgroud)
通过调用as_view()我的视图类上的函数MyView将给我一个视图,我将使用request参数调用以启动请求 - 响应周期.
在你的情况下:
my_callable_view = BlogIndex.as_view() # returns a callable view
<function blog.views.BlogIndex>
Run Code Online (Sandbox Code Playgroud)
现在,调用此函数并传递request.
response = my_callable_view(request) # generate proper response
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10389 次 |
| 最近记录: |