Dav*_*dad 55 python django django-admin django-sites
我正在通过标准的Django教程为应用程序创建管理员.在设置中评论管理相关的东西并运行syncdb后,我收到此消息:
DoesNotExist at /admin/ Site matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
Sim*_*ser 106
Site您的Django项目的对象丢失了.每个Django项目都有一个Site包含站点名称和域的对象.它通常在创建Django项目时自动创建(特别是在syncdb命令运行时)但在您的情况下似乎没有发生.
要解决这个问题:
打开您网站的Django shell(python manage.py shell).
输入以下内容:
>>> from django.contrib.sites.models import Site
>>> Site.objects.create(name='example.com', domain='example.com')
Run Code Online (Sandbox Code Playgroud)
如果您想稍后更改这些值,请转到管理面板(/admin/)并在该部分中编辑站点对象Sites.
Mil*_*dek 39
除了Simeon Visser对于那些仍然遇到问题的人的回答之外,请确保SITE_ID您设置中的变量与新创建的对象的ID相匹配Site.
Ric*_*lva 32
当您将django.contrib.sites包含到INSTALLED_APPS并运行命令"python manage.py migrate"时,应用程序会自动在"django_site"表中创建一个对象(域名和显示名称等于"example.com").不需要自己创建它.
您可能只需要将设置SITE_ID = 1添加到settings.py文件中.
小智 6
从已安装的应用程序中注释掉django.contrib.sites。即
#'django.contrib.sites',
Run Code Online (Sandbox Code Playgroud)
运行后,如果您的站点表中已经有example.com
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
您需要获取此条目的ID。
要获取ID,您可以-
python manage.py shell
from django.contrib.sites.models import Site
print Site.objects.get(name='example.com').id
Run Code Online (Sandbox Code Playgroud)
获取您在此处输入的ID setting.py。例如。
SITE_ID = 8
Run Code Online (Sandbox Code Playgroud)
基本上,对应于您的游览网站的表格中的ID和settings.py中的ID应该匹配。