我对 Django 中的站点系统有疑问。我的问题是在Site.objects.get_current()
开发服务器的初始加载时在某些页面上运行时出现异常,Site matching query does not exist.
但是如果我加载站点的主页,它加载得很好,那么我可以返回到任何其他页面,但它们加载得很好也是。
有没有人遇到过这个问题?
谢谢,
缺口
我对 Django 中的站点系统有疑问。我的问题是在Site.objects.get_current()
开发服务器的初始加载时在某些页面上运行时出现异常,Site matching query does not exist.
但是如果我加载站点的主页,它加载得很好,那么我可以返回到任何其他页面,但它们加载得很好也是。
有没有人遇到过这个问题?
谢谢,
缺口
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
在生产中使用动态,您的服务器在本地和服务器上的响应会有所不同。
添加SITE_ID = 1
到您的settings.py,python manage.py syncdb
如果不存在则运行以创建相应的表,这将起作用
然后,您可以登录到您的管理站点:单击Site
以将默认值修改为您的,这在您编辑对象时使用,如果您在 models.py 中定义了一个函数example.com
,它将提供一个View on site
按钮get_absolute_url