【发布时间】:2015-07-31 22:19:15
【问题描述】:
urls.py 与项目的相关部分:
from django.conf.urls import include, url, patterns
urlpatterns = patterns('',
# other ones ...
url(r'^accounts/password/reset/$',
'django.contrib.auth.views.password_reset',
{'post_reset_redirect' : '/accounts/password/reset/done/'}),
url(r'^accounts/password/reset/done/$',
'django.contrib.auth.views.password_reset_done'),
url(r'^accounts/password/reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
'django.contrib.auth.views.password_reset_confirm',
{'post_reset_redirect' : '/accounts/password/done/'}),
url(r'^accounts/password/done/$',
'django.contrib.auth.views.password_reset_complete'),
)
根据要求,这里是密码重置表格:
{% extends "site_base.html" %}
{% block title %}Reset Password{% endblock %}
{% block content %}
<p>Please specify your email address to receive instructions for resetting it.</p>
<form action="" method="post">
<div style="display:none">
<input type="hidden" value="{{ csrf_token }}" name="csrfmiddlewaretoken">
</div>
{{ form.email.errors }}
<p><label for="id_email">E-mail address:</label> {{ form.email }} <input type="submit" value="Reset password" /></p>
</form>
{% endblock %}
但是每当我导航到/accounts/password/reset/ 页面并填写电子邮件并单击进入时,页面会立即重定向到/accounts/password/reset/done/,并且没有发送任何电子邮件。
我的相关@987654328@变量:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'XXX@gmail.com'
EMAIL_HOST_PASSWORD = 'XXXXXX'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
我知道电子邮件有效,因为我在django-registration-redux 的注册流程完美无缺。
有什么想法吗?
【问题讨论】:
-
您能否向我们展示您负责发送电子邮件的视图示例?
-
@tanorix 正如你在上面的
urls.py中看到的那样,有内置的,所以你可以在这里看到它们:github.com/django/django/blob/master/django/contrib/auth/… -
尝试暂时切换到file backend(或控制台后端,如果你在你的开发环境中)——这应该有助于显示问题是在视图中还是在电子邮件配置中(我知道你说这些电子邮件在 django-registration-redux 中工作,但无论如何这可能值得一试)。
-
你什么时候显示你的地址电子邮件?因为正如我们在您向我们展示的 url 中看到的那样,在第 154 行,该函数尝试发送电子邮件,因此在您的 urls.py 中,您必须在 ^accounts/password/reset/done/$
-
@Alasdair,只是尝试过,没有运气。似乎问题不在于尝试发送电子邮件,而在于甚至一开始就尝试过,这似乎没有发生