【发布时间】:2022-01-19 20:09:19
【问题描述】:
我正在为 Django 项目中的帐户应用程序使用 auth_views 登录和密码重置系统。 密码重置功能在 localhost 上运行良好。但是,一旦在尝试重置密码时部署,发送到用户注册电子邮件帐户的电子邮件包含不正确的重置 URL。重置 URL 的域部分包含 localhost 地址,而不是站点的域。
电子邮件被发送到http://127.0.0.1:8000/accounts/reset/MTk/azifmz-484db716de96c7628427b41e587c1910/[![enter此处的图片描述]1]1之类的链接
我期望发送的电子邮件包含特定于发送它的域的正确返回 URL。例如 https://www.example.com/accounts/reset/MTk/azifmz-484db716de96c7628427b41e587c1910.
在settings.py中
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = 'index'
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
}
}
}
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST= 'smtp.gmail.com'
EMAIL_HOST_USER= 'myemail@gmail.com'
EMAIL_HOST_PASSWORD= 'mypassword'
EMAIL_USE_TLS= True
EMAIL_PORT= 587
在我的帐户 urls.py 中,我使用的是 django.contrib.auth 提供的默认分类视图。重置工作流程没有自定义视图。我希望配置此工作流程以避免现在必须编写自定义视图。 urls.py
path('password_reset/', auth_views.PasswordResetView.as_view(
template_name="accounts/password_reset_form.html", success_url="done/"), name="password_reset"),
path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(
template_name = "accounts/password_reset_done.html"), name="password_reset_done"),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
template_name = "accounts/password_reset_confirm.html"), name="password_reset_confirm"),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(
template_name = "accounts/password_reset_complete.html"), name="password_reset_complete"),
最后,html 模板也很标准:
<div class="jumbotron">
<form method="POST">
{% csrf_token %}
{% bootstrap_form form %}
<input type="submit" class='btn btn-primary' value="Reset Password">
</form>
</div>
【问题讨论】:
标签: django email return reset-password