Python noob,因为这是我的第一个项目,所以请原谅我的不熟悉。
该网站运行良好,直到我在我的应用上点击“退出”。在那之后,该网站会给我这个错误: DoesNotExist at / login / 网站匹配查询不存在。
我到处搜索,我得到的唯一解决方案是设置网站框架,SITE_ID等。我认为我的计算机上的这些项目很好,但我找不到一个演练/指南来帮我查看它们
谁能告诉我问题是什么以及如何解决?在此先感谢:3
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '/home/dotcloud/nhs.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
答案 0 :(得分:142)
如果您没有在数据库中定义站点并且django想要引用它,则需要创建一个站点。
来自python manage.py shell
:
from django.contrib.sites.models import Site
new_site = Site.objects.create(domain='foo.com', name='foo.com')
print (new_site.id)
现在将settings.py中的网站ID设置为SITE_ID
答案 1 :(得分:26)
表django_site
必须包含一个值与id
相同的行(默认等于1
),因为SITE_ID
设置为{{1} }})。
答案 2 :(得分:2)
我在不使用python manage.py
shell
首先,我尝试使用manage.py
shell:
from django.contrib.sites.models import Site
new_site = Site.objects.create(domain='foo.com', name='foo.com')
print new_site.id
但是它给出了INTEGRITY ERROR
简短回答是将SITE_ID = 1
添加到settings.py
如果你想知道你的网站ID是什么,那么进入实际的数据库,我下载sqliteman看看我的桌子有什么。因此,您在表格中拥有的任何网站ID都会分配给SITE_ID
这是因为有一个函数get_current
会查找SITE_ID
并且在settings.py
tables
-django_site
--Columns
---id
它的id应为1,name为example.com,domain为example.com
希望这是一个很好的答案和帮助
答案 3 :(得分:1)
我看到为此创建新网站和引用ID的答案。但是,如果您已经拥有一个网站或以某种方式删除并再次从UI创建该网站,那么该ID将继续递增。要解决此问题,您可以按如下方式获取ID -
要获取您可以执行的ID -
python manage.py shell
from django.contrib.sites.models import Site
print Site.objects.get(name='example.com').id
获取setting.py
的ID。例如
SITE_ID = 8
基本上与你的旅游网站和settings.py对应的表中的ID应该匹配。
答案 4 :(得分:1)
在您的Django项目的settings.py中添加SITE_ID = 1
答案 5 :(得分:0)
答案 6 :(得分:0)
您似乎想添加 SITE_ID = 1 在settings.py