2012-03-22 131 views
0

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

但四尝试:

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

,但我有一个错误

login_required()得到了一个意想不到的关键字参数 'TEMPLATE_NAME'

所以,我怎样才能把我的TEMPLATE_NAME用于在我的应用程序登录?有这个装饰者?

求助THX

洛朗

回答

1

我没有发现任何login_required模板变种... 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())) 
+0

这里的django文档:如果你不想调用模板registration/login.html,你可以通过额外的参数将template_name参数传递给你的URLconf中的视图。例如,此URLconf行将使用myapp/login.html来代替: (r'^ accounts/login/$','django.contrib.auth.views.login',{'template_name':'myapp/login。您可以通过将redirect_field_name传递给视图来指定包含要在登录后重定向到的URL的GET字段的名称。默认情况下,该字段在下一个被调用。 – laurent 2012-03-22 15:49:20

+0

所以我想我可以使用template_name与装饰器..我错了我认为 – laurent 2012-03-22 15:50:43

+0

我认为你应该改变模板,并保留旧视图中的所有逻辑 – 2012-03-22 15:52:57

3

template_name可以在login view,不能设置在装饰者login_required

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

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

这样您将拥有自定义登录模板。

相关问题