django 1.1和Template_name中的@login_required装饰器

时间:2012-03-22 15:37:56

标签: django login django-templates decorator

我在我的视图中使用@login_required ..在django书中他们告诉我你不想使用默认的registration / login.html模板,你可以传递额外的视图参数template_name。

但是我试过了:

@login_required(template_name='washtest/login.html')

但我有错误

  

login_required()获得了一个意外的关键字参数'template_name'

那么如何将我的template_name传递给我的应用程序进行登录?有这个装饰师吗?

寻求帮助

劳伦

2 个答案:

答案 0 :(得分:3)

可以在login view上设置template_name,而不是在login_required装饰器上设置。

login_required使用settings.LOGIN_URL中设置的网址。因此,您使用该URL和自定义模板定义视图:

(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}),

这样你就可以拥有自定义登录模板。

答案 1 :(得分:1)

我在login_required中找不到任何模板var ... https://docs.djangoproject.com/en/1.1/topics/auth/#django.contrib.auth.decorators.login_required

您可以在urls.py中使用权限装饰器,然后检查用户是否已登录:

(r"^market/$", permission_required("CHANGE", "/accounts/denied/")(CreateMarketView.as_view()))