一尘不染

如何要求登录Django通用视图?

django

我想限制对Django通用视图处理的URL的访问。

对于我的观点,我知道login_required装饰器可以完成这项工作。同样,“创建/删除/更新通用视图” login_required也带有该参数,但是我找不到其他通用视图的方法。


阅读 401

收藏
2020-03-30

共1个答案

一尘不染

对于Django <1.5,你可以通过将函数包装在url中来添加装饰器,从而可以包装通用视图:

from django.contrib.auth.decorators import login_required
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
    (r'^foo/$', login_required(direct_to_template), {'template': 'foo_index.html'}),
    )

基于函数的通用视图在Django 1.4中已弃用,在Django 1.5中已删除。但是同样的原理也适用,只是用login_required装饰器包装基于类的视图的view函数:

login_required(TemplateView.as_view(template_name='foo_index.html'))
2020-03-30