我正在开发一个应用程序,其中我创建了一个通用的 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"),
)
现在,我并不真正理解文档中关于此方法的内容。有人可以阐明这个概念吗?
原文由 Manas Chaturvedi 发布,翻译遵循 CC BY-SA 4.0 许可协议
在基于类的视图中,您必须调用
as_view()
函数,以便返回一个 可调用视图,该视图采用request
并返回response.
6e05e1在通用视图的情况下,请求-响应周期中的点。as_view
是将我的MyView
类与其 url 连接的函数(类方法)。来自 django 文档:
您只是不能像在普通的基于函数的视图中那样使用基于类的视图。
如果您希望 CBV 正常运行,则上述代码无效。为此,您需要提供一个可调用的视图,然后将请求传递给它。例如:
通过在我的视图类上调用
as_view()
函数MyView
将给我一个视图,我将使用request
响应参数启动请求。在你的情况下:
现在,调用此函数并传递
request
。