我在Django管理员方面遇到了一些问题。
在syncdb之后,结果是:
Creating tables ...
Installing custom SQL ...
Installing indexes ...
No fixtures found.
这是什么意思?
无论如何,当我访问网站管理面板http://www.example.com/admin/时,收到此消息:
DoesNotExist at /admin/
Site matching query does not exist.
setting.py包含:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
)
ur.py包含:
from django.conf.urls.defaults import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'rshd.views.home', name='home'),
# url(r'^rshd/', include('rshd.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
答案 0 :(得分:74)
如果您只从项目中运行一个网站,那么您真的不需要sites
框架,因此最简单的解决方法是从您的{{1} 删除以下项目错误应该消失:
INSTALLED_APPS
您还可以从shell重新创建缺少的Site对象。运行python manage.py shell然后:
'django.contrib.sites'
答案 1 :(得分:7)
如果您使用django.contrib.sites
而不通过更改SITE_ID = 1
文件中的settings.py
值来删除此错误,则可以解决此错误。
当我在服务器上更改域名时,我发生了这种情况,我手动从http://mynewdomainname.com/admin/sites/site/
删除了旧域名,数据库中的旧域记录有id = 1
,我也添加了新的域名mynewdomainname.com
,ID为id = 2
,
我刚刚更改为SITE_ID = 2
并且错误消失 SITE_ID指的是当前" pk"您默认使用的活动域名。
在代码中:
>>> from django.contrib.sites.models import Site
>>> # get_current() came from SiteManager class manager,
>>> # see site-packages/django/contrib/sites/models.py
>>> current_site = Site.objects.get_current()
>>> print(current_site.pk)
2
>>> print(current_site.domain)
'http://mynewdomainname.com'
在settings.py
更改
SITE_ID = 2
请注意 django sites app中的当前域ID。
答案 2 :(得分:3)
同样的问题也突然出现在我面前,你知道有很多解决方案。但是,这个突然问题的原因是什么?
深入挖掘后,我发现原因是,我们忽略了第一个syncdb操作中的一个步骤。
当你有第一个syncdb时,django会要求你创建一个默认帐户,如果你没有在这个交互式节目中输入,那么该网站对象就不会自动创建。
所以要小心这一点。我正在使用django 1.3.1,不知道最新版本是否解决了这个问题。
答案 3 :(得分:1)
通过另一种方式解决问题:
我使用PostgreSQL和Django 1.45 ...... 当我删除了www.example.com网站并添加了一个新的www.xxx.com网站时,它被添加为ID = 2 因为PostgreSQL没有返回ID号,登录和注销Django-Sites只是以某种方式绑定到你的DB中的ID = 1站点......
我去了我的PostgreSQL数据库并将www.xxx.com的ID更改为1,然后我又能够看到登录和注销网站:)
顺便说一句。 [是的,你可以从你的settings.py中删除django.contrib.sites如果你不需要它^^(但我没有在我的情况下尝试过这个,ID号问题)]
希望它能为更多用户服务! ;)
答案 4 :(得分:1)
由于上述评论很旧且syncdb
命令不存在,我不想删除django.contrib.sites
,这对我有用:
增量SITE_ID
。我有SITE_ID = 1
,将其更改为SITE_ID = 2
,一切都恢复了。
答案 5 :(得分:0)
是,将 SITE_IT = 1 更改为 SITE_ID = 2 ,一切正常
答案 6 :(得分:0)
是的,顶部提到的解决方案可以是解决方案的一部分。
但是我注意到,不仅包括django.contrib.sites
而不进行配置都会导致该问题,还包括
如果所述软件包的配置不正确,allauth
(pip install django-allauth)可能会导致此问题。
(据我所见allauth
在默认情况下未正确配置 ...)
答案 7 :(得分:0)
如果您遇到错误或只想更改站点,您可以做的另一件事很简单。
答案 8 :(得分:-1)
检查您的Window任务管理器并确保有1个进程名称'python.exe'正在运行。如果有很多,请删除所有这些,然后重新启动服务器。这个解决方案适合我。
答案 9 :(得分:-1)
在您的settings.py中添加SITE_ID = 1