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')

  • 相关阅读:
    dp、sp 转换为 px 的工具类
    Android 实现两屏幕互相滑动
    apk系统签名命令
    (android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图
    软件包 com.baidu.location
    BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换
    UDP示例
    native 方法列表说明
    Android Jni调用浅述
    python数据分析Titanic_Survived预测
  • 原文地址:https://www.cnblogs.com/louzi/p/10096663.html
Copyright © 2011-2022 走看看