如何用我的IP替换'example.com'作为重置密码链接

时间:2013-07-01 10:05:27

标签: django django-authentication

我正在使用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'但是我仍然需要保留整个保存功能代码。但是这肯定不是最好的方式)

感谢您帮助建议解决此问题的其他方法。

3 个答案:

答案 0 :(得分:3)

sites framework中的默认域名为example.com。你必须改变它。

答案 1 :(得分:0)

Django使用django.contrib.sites框架来确定默认site_url,默认情况下,site_urlexample.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 syncdbpython manage.py syncdb之后执行{{1}}。

答案 2 :(得分:0)

Django默认情况下将 example.com 添加到应用网站。您可以参考sites framework。您在使用包含您的域名的电子邮件发送部分时必须更改此内容。

要解决此问题,您需要在管理网站中设置域名(无协议)。