Django提供了几个视图,可用于处理登录,注销和密码管理。 这些使用内置的认证表单,但你也可以传入你自己的表单。 Django没有为认证视图提供默认模板 - 但是为下面的每个视图记录了模板上下文。
在您的项目中实现这些视图有不同的方法,但最简单和最常用的方法是将提供的URLconf包含在您自己的URLconf中的django.contrib.auth.urls中,例如:
urlpatterns = [url('^', include('django.contrib.auth.urls'))]
这将使每个视图在默认URL(详见下文)中可用。
内置视图都会返回一个TemplateResponse实例,这使您可以在渲染之前轻松定制响应数据。 大多数内置身份验证视图提供了一个URL名称以便于参考。
login
登录用户。
默认URL:/ login /
可选参数:
-
template_name:显示用于登录用户的视图的模板的名称。默认为registration / login.html。
-
redirect_field_name:包含要在登录后重定向到的URL的GET字段的名称。 默认为next。
-
authentication_form:用于身份验证的可调用对象(通常只是一个表单类)。 默认为AuthenticationForm。
-
current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
-
extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
一下是登录功能:
-
如果通过GET调用,它将显示一个登录表单,并将其发布到同一个URL。 更多关于这一点。
-
如果使用用户提交的凭证通过POST调用,它会尝试登录用户。如果登录成功,则视图将重定向到下一个指定的URL。 如果未提供下一个,则重定向到LOGIN_REDIRECT_URL(默认为/ accounts / profile /)。 如果登录失败,它将重新显示登录表单。
您有责任为登录模板提供html,默认情况下称为registration / login.html。
模版上下文
- form:表示AuthenticationForm的Form对象。
- next:成功登录后重定向到的URL。 这也可能包含一个查询字符串。
- site:当前网站,根据SITE_ID设置。 如果您没有安装网站框架,则会将其设置为RequestSite的一个实例,该实例从当前的HttpRequest中派生网站名称和域。
- site_name:site.name的别名。 如果您没有安装网站框架,则会将其设置为request.META ['SERVER_NAME']的值。 如果你不想调用模版的 registration / login.html,你可以通过额外的参数将template_name参数传递给你的URLconf中的视图。
logout
记录用户退出。
默认网址:/ logout /
可选参数:
- next_page:注销后重定向到的URL。
- template_name:登出用户之后显示的模板的全名。 如果未提供参数,则默认为registration / logged_out.html。
- redirect_field_name:包含要注销后重定向到的URL的GET字段的名称。 默认为下一个。 如果传递给定的GET参数,则覆盖next_page URL。
- current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
- extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
模版上下文
- title:字符串“已注销”的本地化。
- site:当前网站,根据SITE_ID设置。 如果您没有安装网站框架,则会将其设置为RequestSite的一个实例,该实例从当前的HttpRequest中派生网站名称和域。
- site_name:site.name的别名。 如果您没有安装网站框架,则会将其设置为request.META ['SERVER_NAME']的值。
- current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
- extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
logout_then_login
记录用户登出,然后重定向到登录页面。
默认网址:无提供。
可选参数:
- login_url:要重定向到的登录页面的URL。 如果未提供,则缺省为LOGIN_URL。
- current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
- extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
password_change
允许用户更改他们的密码。
默认URL:/ password_change /
可选参数:
- template_name:用于显示密码更改表单的模板的全名。 如果未提供,则默认为registration/ password_change_form.html。
- post_change_redirect:成功更改密码后重定向到的URL。
- password_change_form:自定义的“更改密码”表单,必须接受用户关键字参数。 该表格负责实际更改用户的密码。 默认为PasswordChangeForm。
- current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
- extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
模板上下文:
form:密码更改表格(请参阅上面的password_change_form)。
password_change_done
用户更改密码后显示的页面。
默认URL:/ password_change_done /
可选参数:
- template_name:要使用的模板的全名。 如果未提供,则默认为registration/ password_change_done.html。
- current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
- extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
password_reset
允许用户通过生成一次性使用链接重置密码,该链接可用于重置密码,并将该链接发送到用户的注册电子邮件地址。
如果提供的电子邮件地址在系统中不存在,则此视图不会发送电子邮件,但用户也不会收到任何错误消息。 这可以防止信息泄露给潜在的攻击者。
如果您想在这种情况下提供错误消息,您可以继承PasswordResetForm并使用password_reset_form参数。
标记为不可用密码的用户不允许请求重置密码以防止在使用外部身份验证来源(如LDAP)时发生误用。 请注意,他们不会收到任何错误消息,因为这会暴露他们的帐户的存在,但不会发送邮件。
默认网址:/ password_reset /
可选参数:
-
template_name:用于显示密码重置表单的模板的全名。如果未提供,则默认为registration/ password_reset_form.html。
-
email_template_name:用于使用重置密码链接生成电子邮件的模板的全名。如果未提供,则默认为registration/ password_reset_email.html。
-
subject_template_name:用于包含重置密码链接的电子邮件主题的模板的全名。如果未提供,则默认为registration/ password_reset_subject.txt。
-
password_reset_form:将用于获取用户的电子邮件以重置密码的表单。默认为PasswordResetForm。
-
token_generator:类的实例来检查一次性链接。这将默认为default_token_generator,它是django.contrib.auth.tokens.PasswordResetTokenGenerator的一个实例。
-
post_reset_redirect:成功的密码重置请求后重定向到的URL。
-
from_email:有效的电子邮件地址。默认情况下,Django使用DEFAULT_FROM_EMAIL。
-
current_app:提示哪个应用程序包含当前视图的提示。有关更多信息,请参阅命名空间URL解析策略。
-
extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
-
html_email_template_name:用于通过密码重置链接生成文本/ html多部分电子邮件的模板的全名。默认情况下,不发送HTML电子邮件。
模板上下文:
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 /
可选参数:
-
uidb64:以base 64编码的用户标识。默认为None。
-
token:令牌来检查密码是否有效。 默认为None。
-
template_name:显示确认密码视图的模板的全名。 默认值是registration / password_reset_confirm.html。
-
token_generator:类的实例来检查密码。 这将默认为default_token_generator,它是django.contrib.auth.tokens.PasswordResetTokenGenerator的一个实例。
-
set_password_form:将用于设置密码的表单。 默认为SetPasswordForm
-
post_reset_redirect:完成密码重置后重定向的URL。 默认为None。
-
current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
-
extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
模板上下文:
form:用于设置新用户密码的表单(参见上面的set_password_form)。
validlink:Boolean,如果链接(uidb64和标记的组合)有效或未使用,则为True。
password_reset_complete
显示通知用户密码已成功更改的视图。
默认网址:/ password_reset_complete /
可选参数:
- template_name:显示视图的模板的全名。 默认为registration/ password_reset_complete.html。
- current_app:提示哪个应用程序包含当前视图的提示。 有关更多信息,请参阅命名空间URL解析策略。
- extra_context:将被添加到传递给模板的默认上下文数据的上下文数据字典。
redirect_to_login帮助函数
Django提供了一个方便的函数redirect_to_login,可以在视图中使用它来实现自定义访问控制。 它重定向到登录页面,然后在成功登录后返回到另一个URL。
必需的参数:
next:成功登录后重定向到的URL。
可选参数:
login_url:要重定向到的登录页面的URL。 如果未提供,则缺省为LOGIN_URL。
redirect_field_name:包含要注销后重定向到的URL的GET字段的名称。 如果给定GET参数通过,则复写next函数。
网友评论