Django - get_current_site(请求)只是抓取 example.com
Django - get_current_site(request) just grabs example.com
我的 django 项目正在与第三方论坛合作。 activation_email 正在通过 get_current_site(request)
发送。
密码剩余由 django.contrib.auth.views import
.
中名为 password_reset
的 django 完成
我需要安装另一个应用 django.contrib.sites
。通过那个 get_current_site(request)
没有给我当前的站点,但是 "example.com" 来自 django.contrib.sites.models
。问题是:
- 激活邮件的域确实有误 (example.com)
- 当我在代码中更改 activation_mail 发件人时,密码重置邮件仍然带有 "example.com" 因为它使用的是 django built_in 方式。
我的项目已经上线了。所以我想我可以删除 example.com 并添加我的域名。但是现在我不能再登录了,出现了这个错误:
django.contrib.sites.models.DoesNotExist: Site matching query does not exist.
您的 Django 项目在 Site 模型中查找条目,但找不到。因此 Django 引发 DoesNotExist 错误。
要解决这个问题,您可以重新创建已删除的 Site 对象。它不需要被称为 example.com
,使用适当的域名。
如果你把自己关在门外。您始终可以创建 shell 会话。 SSH 到您的服务器并在 manage.py 的文件夹中键入:
$ python manage.py shell
>>> from django.contrib.sites.models import Site
>>> site = Site(domain="yourdomain.com", name="My awesome site")
>>> site.save()
其他模型条目可以引用旧站点对象。通常第一个 Site 对象的主键 (id) 是 1。但是您新创建的 site 对象有一些其他的 id。大多数时候你不想改变 id,因为它会破坏关系。但我们试图恢复破裂的关系,所以我们开始吧:
>>> print(site.id)
2 # The id of the current site object.
>>> site.id = 1
>>> site.save()
>>> print(site.id)
1
或者只是打开一个数据库会话并使用 SQL 语句创建这个对象。
我的 django 项目正在与第三方论坛合作。 activation_email 正在通过 get_current_site(request)
发送。
密码剩余由 django.contrib.auth.views import
.
password_reset
的 django 完成
我需要安装另一个应用 django.contrib.sites
。通过那个 get_current_site(request)
没有给我当前的站点,但是 "example.com" 来自 django.contrib.sites.models
。问题是:
- 激活邮件的域确实有误 (example.com)
- 当我在代码中更改 activation_mail 发件人时,密码重置邮件仍然带有 "example.com" 因为它使用的是 django built_in 方式。
我的项目已经上线了。所以我想我可以删除 example.com 并添加我的域名。但是现在我不能再登录了,出现了这个错误:
django.contrib.sites.models.DoesNotExist: Site matching query does not exist.
您的 Django 项目在 Site 模型中查找条目,但找不到。因此 Django 引发 DoesNotExist 错误。
要解决这个问题,您可以重新创建已删除的 Site 对象。它不需要被称为 example.com
,使用适当的域名。
如果你把自己关在门外。您始终可以创建 shell 会话。 SSH 到您的服务器并在 manage.py 的文件夹中键入:
$ python manage.py shell
>>> from django.contrib.sites.models import Site
>>> site = Site(domain="yourdomain.com", name="My awesome site")
>>> site.save()
其他模型条目可以引用旧站点对象。通常第一个 Site 对象的主键 (id) 是 1。但是您新创建的 site 对象有一些其他的 id。大多数时候你不想改变 id,因为它会破坏关系。但我们试图恢复破裂的关系,所以我们开始吧:
>>> print(site.id)
2 # The id of the current site object.
>>> site.id = 1
>>> site.save()
>>> print(site.id)
1
或者只是打开一个数据库会话并使用 SQL 语句创建这个对象。