0

我对 Django 中的站点系统有疑问。我的问题是在Site.objects.get_current()开发服务器的初始加载时在某些页面上运行时出现异常,Site matching query does not exist.但是如果我加载站点的主页,它加载得很好,那么我可以返回到任何其他页面,但它们加载得很好也是。

有没有人遇到过这个问题?

谢谢,

缺口

4

2 回答 2

1

get_current查看当前主机名并检测您是否有具有Site匹配域名的对象。

也许您正在使用的开发localhost或类似的东西。您需要创建一个Site具有相同域名的对象,即通过可以添加到迁移中的类似内容:

if settings.DEBUG:
    development_site_domain = 'localhost'  # Or whatever yours is.
    Site.objects.create(
        name=development_site_domain, 
        domain=development_site_domain)

Site对于您通过其访问应用程序的任何 FQDN,您必须在数据库中有一个对象。您还需要在ALLOWED_HOSTS设置中包含 FQDN。

另一种方法是设置SITE_ID = 1(或数据库中现有SITE_ID的任何 pk)。这里的缺点是,如果您SITE_ID在生产中使用动态,您的服务器在本地和服务器上的响应会有所不同。

于 2017-09-21T16:11:44.063 回答
0

添加SITE_ID = 1到您的settings.py,python manage.py syncdb如果不存在则运行以创建相应的表,这将起作用

然后,您可以登录到您的管理站点:单击Site以将默认值修改为您的,这在您编辑对象时使用,如果您在 models.py 中定义了一个函数example.com,它将提供一个View on site按钮get_absolute_url

于 2014-05-28T05:58:36.167 回答