Django入门之用户管理(IV)

本篇内容是利用Python语言,创建一个多用户的文章管理系统。
头图


Django入门之用户管理

修改密码
修改密码使用的就是Django内置的方法,就是将Django中的admin页面的方法拿过来直接使用。其源代码在Django的contrib/auth/views.py中的password_change
既然是直接使用源代码,直接将路径配置好就可以了,配置路径如下:

    url(r'^password-change/$',auth_views.password_change,{"post_change_redirect":"account/password-change-done"},name='password_change'),#1
    url(r'^password-change-done/$',auth_views.password_change_done,name='password_change_done'),

1.为修改源代码的显示页面的路径为account下的password-change-done
将跳转链接添加到header.html中跳转链接为account:password_change
重新启动系统,并登陆就可以对密码进行修改了。
密码重置
密码重置则是利用在用户忘了密码以后,利用向邮箱发送链接的方式对密码进行重置。使用的依然是Django内置的方法。

    def password_reset(request,
                   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,
                   post_reset_redirect=None,
                   from_email=None,
                   extra_context=None,
                   html_email_template_name=None,
                   extra_email_context=None):

template_name='registration/password_reset_form.html'为发送邮件的表单模板。可以在原文件位置重写,也可以在account下重写在修改路径。
email_template_name='registration/password_reset_email.html'为发送给用户邮件的内容。
subject_template_name='registration/password_reset_subject.txt'为发送内容的主题。
post_reset_redirect=None指明跳转目标,可在url中重新声明。
password_reset_done为显示发送成功的信息。
在account下创建上述声明的html文件对前端文件进行重写。并依次填写url路径为:

    url(r'^password-reset/$',auth_views.password_reset,{"template_name":"account/password_reset_form.html","email_template_name":"account/password_reset_email.html","subject_template_name":"account/password_reset_subject.txt","post_reset_redirect":"/account/password-reset-done"},name="password_reset"),
    url(r'^password-reset-done/$',auth_views.password_reset_done,{"template_name":"account/password_reset_done.html"},name="password_reset_done"),
    url(r'^password-reset-confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$', auth_views.password_reset_confirm, {"template_name":"account/password_reset_confirm.html","post_reset_redirect":"/account/password-reset-complete"}, name="password_reset_confirm"),
    url(r'^password-reset-complete/$', auth_views.password_reset_complete, {"template_name": "account/password_reset_complete.html"},name='password_reset_complete'),

最后在settings中添加

    EMAIL_HOST = "smtp.qq.com"
    EMAIL_HOST_USER = "发邮件的邮箱地址"
    EMAIL_HOST_PASSWORD = "密码"
    EMAIL_PORT = 587#qq邮箱的端口号
    EMAIL_USE_TLS = True
    DEFAULT_FROM_EMAIL ="发邮件的邮箱地址"

在这里用的是qq邮箱作为发送信箱,记得在发送邮箱的邮箱中设定允许使用smtp协议发送邮件。
在交互模式中测试一下:

    python manage.py shell
    from django.core.mail import send_mail
    send_mail("learn django","there is a very good lesson of Django","发送邮件地址",['目标地址'],fail_silently=False)

如果成功就会在目标地址中收到一封内容为there is a very good lesson of Django的邮件。
在操作的过程中,遇到了很多错误,在django测试页面中,包括10061、10051、10053。
首先保证代码无误的情况下,积极谷歌,我遇到的问题,肯定也有人遇见过。
注:
1.填写的发送邮件的地址一定要在Django中注册过了,Django不会没有理由的给陌生邮箱发送重置密码网址。
2.如果在注册过程中使用的邮箱并不是真实有效的,也没有关系,在settings中最后添加一行

    EMAIL_BACKEND = 'django.corn.mail.backends.console.EmailBackend'

就可以在后台中收到发送邮箱发送的内容了。

利用第三方应用重置密码
其实和创建一个应用一样,利用第三方应用需要将第三方源代码下载下来,在settings中进行配置,并在配置项目的u。
提醒一点,我们这个项目所有的模板文件都放在了/templates目录下,记得将第三方应用中的模板文件拷贝过来。
正常情况下就可以使用了。
注:在写前端页面跳转链接的时候,使用url+应用名称:应用下的地址(为自己命名后的名称)。

猜你喜欢

转载自blog.csdn.net/sinat_38885850/article/details/82155524