zoukankan      html  css  js  c++  java
  • django的登录和邮箱修改密码认证

    urls.py

    from django.urls import path, re_path, include
    from django.contrib.auth.views import PasswordResetDoneView
    from django.contrib.auth.views import LoginView
    from django.contrib.auth.views import LogoutView
    from django.contrib.auth.views import logout_then_login
    from django.contrib.auth.views import PasswordResetConfirmView
    from django.contrib.auth.views import PasswordResetCompleteView
    from django.contrib.auth.views import PasswordResetView
    from user import views

    path('login/', LoginView.as_view(), name='login'),
    path('logout/', LogoutView.as_view(), name='logout'),
    path('logout_then_login/', logout_then_login, name='logout_then_login'),
    #在as_view中制定自定义的邮箱认证表单类
    path('password-reset/', PasswordResetView.as_view(form_class=views.CustomPasswordChangeForm), name='password_reset'),
    re_path(r'^password-reset/confirm/(?P<uidb64>[-w]+)/(?P<token>[-w]+)/$', PasswordResetConfirmView.as_view(),
    name='password_reset_confirm'),
    path('password-reset/complete/', PasswordResetCompleteView.as_view(), name='password_reset_complete'),
    path('password-reset/done/', PasswordResetDoneView.as_view(), name='password_reset_done'),

    user.views.py

    from django.contrib.auth.views import PasswordResetForm
    from django.contrib.auth.models import User
    from django.forms import ValidationError

    #如果用户注册的时候没有填写邮箱,django只会不发送邮件不会报错,所以需要自定义Form添加邮箱验证如果邮箱不存在添加错误
    class CustomPasswordChangeForm(PasswordResetForm):

    def clean_email(self):
    email = self.cleaned_data['email']
    if User.objects.filter(email=email):
    return email
    else:
    self.add_error('email',ValidationError('邮箱未注册'))

    registration/password_reset_email.html
    django默认的发送邮件格式
    Someone asked for password reset for email {{ email }}. Follow the link below:
    {{ protocol }}://{{ domain }}{% url "password_reset_confirm" uidb64=uid token=token %}
    Your username, in case you've forgotten: {{ user.get_username }}

    setting.py
    设置邮箱配置
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_USE_SSL = True
    EMAIL_HOST = 'smtp.qq.com'
    EMAIL_HOST_USER = '541260561@qq.com'
    EMAIL_HOST_PASSWORD = 'lgtbakuvoyfsbbjd'#qq邮箱开启SMTP服务后随机生成的密码
    EMAIL_PORT = 465
    EMAIL_FROM = '生鲜<541260561@qq.com>'
    DEFAULT_FROM_EMAIL = EMAIL_FROM

    from django.urls impost reverse_lazy #惰性反向匹配url在app没有加载完全的时候也可以匹配成功
    LOGIN_REDIRECT_URL = reverse_lazy('account:dashboard')
    LOGIN_URL = reverse_lazy('login')
    LOGOUT_URL = reverse_lazy('logout')

  • 相关阅读:
    CSS3(4)---动画(animation)
    MDT 2010驱动管理新方法。
    windows 2012 试用180天
    Mac地址绑定的wifi
    用于主题检测的临时日志(b2d5c7b3-e3f6-4b0f-bfa4-a08e923eda9b
    samba4.1.9安装
    samba权限之easy举例说明--原创
    NFS性能优化
    工作组环境下管理windows.
    管理windows防火墙
  • 原文地址:https://www.cnblogs.com/louzi/p/10096663.html
Copyright © 2011-2022 走看看