如何使用Django的通用视图进行身份验证

时间:2013-10-04 23:54:06

标签: django django-models django-forms django-templates django-views

我正在尝试按照此链接执行操作: https://docs.djangoproject.com/en/1.5/topics/auth/default/#django.contrib.auth.views.login

所以在上面提供的链接中,它谈到“URL name:login”,在可选参数中说:

  

“redirect_field_name:包含要在登录后重定向到的URL的GET字段的名称。如果传递给定的GET参数,则覆盖next。”

如何指定下一步是什么?如果向下滚动一点,就会显示

  

“...视图重定向到next中指定的URL。如果未提供next,则重定向到settings.LOGIN_REDIRECT_URL”。

如何指定下一个是什么以及settings.LOGIN_REDIRECT_URL是什么?

此外,如果有人可以举例说明如何使用通用视图进行身份验证,那将会很有帮助,但如果没有,那就没问题了,只要上面的问题得到解答。我知道他们给出了一个模板示例,但我想要一个如何创建实际视图并使用它的示例。

1 个答案:

答案 0 :(得分:2)

假设您的urls.py看起来与此相似:

from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
    url(r'^$', 'mywebsite.index', name='index'),
    url(r'^login/$', 'django.contrib.auth.views.login', name='login'),
    url(r'^logout/$', 'django.contrib.auth.views.logout_then_login', name='logout')
)

然后在您的设置文件中,输入以下内容:

LOGIN_REDIRECT_URL = 'index'
LOGIN_URL = 'login'
LOGOUT_URL = 'logout'

这将导致登录页面重定向到mywebsite.index视图(因为name='index'与此视图匹配,这就是我们在LOGIN_REDIRECT_URL中设置的内容。)

  

我知道他们给出了一个模板示例,但我想要一个如何创建实际视图并使用它的示例。

“实际视图”由django在django.contrib.auth.views.login提供,因此您根本不需要创建视图。这就是你正在阅读的部分的重点。您提供模板,该模板发布到视图,然后视图重定向到LOGIN_REDIRECT_URL

现在,当您使用@login_required装饰器时,django会通过内置的django登录视图将用户重定向到您的登录模板。