使用User authentication and permissions

这篇文章是笔记,详细内容参见Mozilla的教程
完整的教材:Django Tutorial Part 8: User authentication and permissions

1, 确认settings.py的INSTALLED_APPS和MIDDLEWARE里面包含下面红色的组件:

INSTALLED_APPS = [
    ...
    'django.contrib.auth',  
    'django.contrib.contenttypes',
    ....
MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',  
    ....

2, 使用admin页面创建user、group。

3, 在主项目的urls.py文件内添加下面的内容:

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

4, 上面url将为我们自动创建下列的url即相对应的form、views。

^accounts/ ^login/$ [name='login']
^accounts/ ^logout/$ [name='logout']
^accounts/ ^password_change/$ [name='password_change']
^accounts/ ^password_change/done/$ [name='password_change_done']
^accounts/ ^password_reset/$ [name='password_reset']
^accounts/ ^password_reset/done/$ [name='password_reset_done']
^accounts/ ^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$ [name='password_reset_confirm']
^accounts/ ^reset/done/$ [name='password_reset_complete']

5, 在app文件夹内的templates目录下面创建registration目录,并在settings.py 文件夹内添加:

TEMPLATES = [
    {
        ...
        'DIRS': ['./templates',],
        'APP_DIRS': True,
        ...

6, 由此我们可以在registration目录下面创建下面的templates:
login.html – 当用户登陆网站时展示的页面
logged_out.html – 当用户登出网站后展示的页面
password_change_done.html – 当用户成功更改其账户密码后展示的页面
password_change_form.html – 用于处理用户更改其账户密码时展示的页面
password_reset_complete.html – 当用户成功重置其账户密码后展示的页面
password_reset_confirm.html – 用于处理用户输入其新账户密码时的页面
password_reset_done.html – 用于提示账户,重置密码连接已经发送到他或她的邮箱时的页面
password_reset_email.html – 邮件模板,内含重置账户密码链接
password_reset_form.html – 用于提示用户输入注册时用的邮箱地址以获得重置账户密码的链接
而如果要用URL tag指向这些templates,需要参考第四点中所列出的url。如指向password_reset_form.html可以使用下面的方式:

<p><a href="{% url 'password_reset' %}">忘记密码?</a></p>

7, 上面的这些templates都要我们自己编写。下面是编写password_reset_email.html时要添加的内容,其他templates不举例:

{{ user.get_username }}, 你好!
你可以点击如下链接以重置你的密码:
{{ protocol }}://{{ domain }}{% url "password_reset_confirm" uidb64=uid token=token %}
    原文作者:derek
    原文地址: https://segmentfault.com/a/1190000008976010
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞