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 并添加我的域名。但是现在我不能再登录了,出现了这个错误: 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 语句创建这个对象。