认证视图

2018-02-23  本文已影响17人  大爷的二舅

Django提供了几个视图,可用于处理登录,注销和密码管理。 这些使用内置的认证表单,但你也可以传入你自己的表单。 Django没有为认证视图提供默认模板 - 但是为下面的每个视图记录了模板上下文。

在您的项目中实现这些视图有不同的方法,但最简单和最常用的方法是将提供的URLconf包含在您自己的URLconf中的django.contrib.auth.urls中,例如:

urlpatterns = [url('^', include('django.contrib.auth.urls'))]

这将使每个视图在默认URL(详见下文)中可用。

内置视图都会返回一个TemplateResponse实例,这使您可以在渲染之前轻松定制响应数据。 大多数内置身份验证视图提供了一个URL名称以便于参考。

login

登录用户。

默认URL:/ login /

可选参数:

一下是登录功能:

模版上下文
logout

记录用户退出。

默认网址:/ logout /

可选参数:

模版上下文
logout_then_login

记录用户登出,然后重定向到登录页面。

默认网址:无提供。

可选参数:

password_change

允许用户更改他们的密码。

默认URL:/ password_change /

可选参数:

模板上下文:

form:密码更改表格(请参阅上面的password_change_form)。

password_change_done

用户更改密码后显示的页面。

默认URL:/ password_change_done /

可选参数:

password_reset

允许用户通过生成一次性使用链接重置密码,该链接可用于重置密码,并将该链接发送到用户的注册电子邮件地址。

如果提供的电子邮件地址在系统中不存在,则此视图不会发送电子邮件,但用户也不会收到任何错误消息。 这可以防止信息泄露给潜在的攻击者。
如果您想在这种情况下提供错误消息,您可以继承PasswordResetForm并使用password_reset_form参数。

标记为不可用密码的用户不允许请求重置密码以防止在使用外部身份验证来源(如LDAP)时发生误用。 请注意,他们不会收到任何错误消息,因为这会暴露他们的帐户的存在,但不会发送邮件。

默认网址:/ password_reset /

可选参数:

模板上下文:

form:用于重置用户密码的表单(请参阅上面的password_reset_form)。

邮件模板上下文:

email:user.email的别名
user:根据电子邮件表单字段显示当前用户。 只有活跃用户才能重置密码(User.is_active为True)。
site_name:site.name的别名。 如果您没有安装网站框架,则会将其设置为request.META ['SERVER_NAME']的值。
domain:site.domain的别名。 如果您没有安装网站框架,则会将其设置为request.get_host()的值。
protocol:http或https
uid:以64为基数编码的用户主键。
token:用于检查重置链接是否有效的令牌。
样本registration/password_reset_email.html(电子邮件正文模板):

Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}

主题模板使用相同的模板上下文。 主题必须是单行纯文本字符串。

password_reset_done

显示在用户通过电子邮件发送的链接后重新设置密码。 如果password_reset()视图没有明确的post_reset_redirect URL集,则默认调用此视图。

默认网址:/ password_reset_done /

如果提供的电子邮件地址在系统中不存在,用户处于非活动状态或密码不可用,用户仍将被重定向到该视图,但不会发送电子邮件。

可选参数:
template_name:要使用的模板的全名。 如果未提供,则默认为注册/ password_reset_done.html。
current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。

password_reset_confirm

提供输入新密码的表单。

默认网址:/ password_reset_confirm /
可选参数:

模板上下文:

form:用于设置新用户密码的表单(参见上面的set_password_form)。
validlink:Boolean,如果链接(uidb64和标记的组合)有效或未使用,则为True。

password_reset_complete

显示通知用户密码已成功更改的视图。

默认网址:/ password_reset_complete /

可选参数:

redirect_to_login帮助函数

Django提供了一个方便的函数redirect_to_login,可以在视图中使用它来实现自定义访问控制。 它重定向到登录页面,然后在成功登录后返回到另一个URL。

必需的参数:
next:成功登录后重定向到的URL。

可选参数:
login_url:要重定向到的登录页面的URL。 如果未提供,则缺省为LOGIN_URL。
redirect_field_name:包含要注销后重定向到的URL的GET字段的名称。 如果给定GET参数通过,则复写next函数。

上一篇 下一篇

猜你喜欢

热点阅读