我正在使用django内置的auth网址和用户登录视图/ logout / passwordreset /
即 在urlpatterns中
url(r'^accounts/', include('django.contrib.auth.urls')),
在我的views.py
中from django.contrib.auth.views import *
输入重置密码的电子邮件地址后,我可以收到包含重置密码链接的电子邮件,但链接类似于http://example.com/accounts/reset/s-3is-7535266db5af311b2a02/
在手动将'example.com'更改为我的IP地址后(因为我在本地主机上运行服务器),我可以更改密码以及使用新密码登录。
我已经阅读了Django身份验证代码,并了解如果没有给出覆盖,则会占用当前网站的域名并将其设置为PasswordResetForm
我应该做些什么来使链接正常工作,以便点击链接后它会成功指向django网址来更改密码。
(我正在考虑在https://github.com/django/django/blob/master/django/contrib/auth/forms.py中覆盖django的induilt PasswordResetForm,但我认为我唯一需要改变的是'domain_override = None'但是我仍然需要保留整个保存功能代码。但是这肯定不是最好的方式)
感谢您帮助建议解决此问题的其他方法。
答案 0 :(得分:3)
sites
framework中的默认域名为example.com
。你必须改变它。
答案 1 :(得分:0)
Django使用django.contrib.sites
框架来确定默认site_url
,默认情况下,site_url
为example.com
。
更好的方法是使用django"初始数据"功能,请参阅https://docs.djangoproject.com/en/dev/howto/initial-data/。
例如,您可以在initial_data.yaml
目录中创建django_app_dir/fixtures
文件,initial_data.yaml
的内容可能是:
- model: sites.site
pk: 1
fields:
name: 'example.com'
domain: 'example.com'
如果这是您第一次初始化数据库,那么您可以在python manage.py loaddata initial_data.yaml
之后python manage.py syncdb
或python manage.py syncdb
之后执行{{1}}。
答案 2 :(得分:0)
Django默认情况下将 example.com 添加到应用网站。您可以参考sites framework。您在使用包含您的域名的电子邮件发送部分时必须更改此内容。
要解决此问题,您需要在管理网站中设置域名(无协议)。