1

我正在为用户登录/注销/密码重置/使用 django 内置身份验证 URL 和视图

即,在 urlpatterns

url(r'^accounts/', include('django.contrib.auth.urls')),

在我看来.py

from django.contrib.auth.views import *

输入重置密码的电子邮件地址后,我可以收到带有重置密码链接的电子邮件,但链接类似于 http://example.com/accounts/reset/s-3is-7535266db5af311b2a02/

在手动将“example.com”更改为我的 IP 地址后(因为我在本地主机上运行服务器),我可以更改密码以及使用新密码登录。

我已阅读 Django 身份验证代码并了解,如果没有给出覆盖,它将采用当前站点的域并将其设置为PasswordResetForm

我应该怎么做才能使链接正常工作,以便在单击链接后成功定向到 django url 以更改密码。

(我正在考虑在https://github.com/django/django/blob/master/django/contrib/auth/forms.py中覆盖 django 的 induilt PasswordResetForm但我认为我唯一需要更改的是 'domain_override=没有',但我仍然必须保留整个保存功能代码。但这绝对不是最好的方法)

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

4

3 回答 3

3

sites框架中的默认域称为example.com. 你必须改变它。

于 2013-07-01T10:08:02.657 回答
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.yamlafterpython manage.py syncdb或者python manage.py syncdb如果这是你第一次初始化 db.

于 2014-04-24T17:01:47.480 回答
0

Django 默认将example.com添加到应用程序站点。你可以参考网站框架。在使用包含您的域名的电子邮件发送部分时,您必须更改此设置。

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

于 2018-05-20T11:59:09.013 回答