2011-08-05 36 views
5

我是工作在我的项目了一段时间,最近注意到,当我尝试去到localhost /管理/它给出了一个错误:管理员登录停止运作的Django

DoesNotExist at /admin/ 

Site matching query does not exist. 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/admin/ 
Django Version:  1.3 
Exception Type:  DoesNotExist 
Exception Value:  

Site matching query does not exist. 

Exception Location:  C:\Python27\lib\site-packages\django\db\models\query.py in get, line 349 

通常当我去那里让我先登录然后重新定向我,但现在它只是错误,除非我已经登录

我只能在管理员登录后在我为用户创建的localhost登录功能中进入我的管理员,然后进入该页面。也从管理页面注销停止工作给出相同的错误。

我正在为用户模块添加一个新字段并在发生这种情况时显示新的用户创建表单。

任何人都有类似的问题?或者也许有人知道是什么造成这种情况?

+0

也许设置调试工作= true在您的settings.py所以我们可以看到一些细节.. –

回答

11

看看这个thread,这似乎有关。

从最后发表的帖子:

由于异常说:“‘现场’匹配查询不存在”,以及文档说了一些关于描述在django_site数据库表中的网站的SITE_ID,我径自并看看我的(sqlite)数据库。 django_site表为空,所以我添加了id = 1的行(与settings.py中的行相同),然后运行。

如果您不介意丢失数据,您可以尝试运行'sql appname',因为此表应该是自动构建的。

+0

其实呀!这是问题所在。我制作了一个不同的站点ID,因为我想在重置密码时将站点信息发送给用户。所以出于某种原因,当Site_id = 2它不起作用,但site_id = 1呢!谢谢:) – Angie

+4

如果其他人遇到这种情况,我从网站列表中删除“example.com”后出现同样的错误。花了一段时间才找到源代码,因为我的登录会话仍处于活动状态。在INSTALLED_APPS中注释掉django.contrib.sites解决了这个问题。 –

+0

@JosephMornin我也因为删除example.com而遇到了这个问题。然而,另一个解决方案(如果你需要保留应用程序)是打开一个Django shell并创建一个新站点并保存它,然后将settings.py中的SITE_ID更改为刚刚创建的站点的ID。这样,如果需要,您仍然可以使用网站应用程序。 – hangtwenty

8

尝试评论或删除'django.contrib.sites'from settings.py中的INSTALLED_APPS设置,应该可以解决问题。

您还可以检查您的网站表:

python manage.py shell 
from django.contrib.sites.models import Site 
Site.objects.all() 

如果没有本地主机定义的站点,你可以创建或重新创建它:

Site.objects.create(pk=1, domain='127.0.0.1:8000', name='localhost') 

这工作为了我。

0

INSTALLED_APPS = [ .... 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', ....唧唧歪歪 ] SITE_ID = 1

尝试添加SITE_ID = 1 ..它为我