gpt4 book ai didi

Django - get_current_site(request) 只是抓取 example.com

转载 作者:行者123 更新时间:2023-12-03 16:27:09 25 4
gpt4 key购买 nike

我的 Django 项目正在与第三方论坛合作。正在通过 get_current_site(request) 发送activation_email .
密码休息是由一个名为 password_reset 的 django 完成的。来自 django.contrib.auth.views import .

对于另一个应用程序,我需要安装 django.contrib.sites .通过那个 get_current_site(request)没有给我当前的站点,而是来自 django.contrib.sites.models 的“example.com” .问题是:

  • 激活邮件确实有错误的域 (example.com)
  • 当我更改代码中的 activation_mail 发件人时,密码重置邮件仍然带有“example.com”,因为它使用的是 django built_in 方式。

  • 我的项目已经上线了。所以我想我可以删除example.com并添加我的域名。但是现在我无法再登录,并且出现此错误: django.contrib.sites.models.DoesNotExist: Site matching query does not exist.

    最佳答案

    您的 Django 项目在站点模型中查找条目,但找不到。因此,Django 引发了一个DoesNotExist 错误。

    您可以做的事情是重新创建已删除的站点对象。不需要叫example.com , 使用适当的域名。

    如果你把自己锁在外面。您始终可以创建 shell session 。 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

    或者只是打开一个 db session 并使用 SQL 语句创建这个对象。

    关于Django - get_current_site(request) 只是抓取 example.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898911/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com