2012-03-16 15 views
22

Tengo algunos problemas con el administrador de Django.Administrador de Django DoesNotExist en/admin/

después syncdb, el resultado es:

Creating tables ... 
    Installing custom SQL ... 
    Installing indexes ... 
    No fixtures found. 

¿Qué significa esto?

De todos modos, cuando visito el panel Administración del sitio http://www.example.com/admin/, recibo este mensaje:

DoesNotExist at /admin/ 
Site matching query does not exist. 

setting.py contiene:

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 contiene:

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

simplemente use 'from django.conf.urls.defaults import *' y 'from django.conf import settings' en su archivo' urls.py' y marque –

+0

gracias Harshith JV Pero no cambia nada –

+0

se puede ver el resultado para syncdb no contiene crear una tabla para admin !!! –

Respuesta

73

Realmente no necesita el marco sites si solo ejecuta un sitio desde el proyecto, por lo que la solución más fácil sería eliminar el siguiente punto de su INSTALLED_APPS y el error debería desaparecer:

'django.contrib.sites' 

También puede volver a crear el objeto de sitio que falta de la envoltura. Ejecutar manage.py shell Python y luego:

from django.contrib.sites.models import Site 
Site.objects.create(pk=1, domain='www.example.com', name='example.com') 
+0

ya eliminar ''django.contrib.sites'' debería funcionar –

+0

Gracias por su esfuerzo Mr-Ramandeep Singh –

+0

Anytime .... !!!! –

1

acaba de arreglar el problema por una de otro modo:

utilizo PostgreSQL y Django 1.45 ... como he quitado el sitio www.example.com y se agregó un nuevo sitio www.xxx.com que se agregó como ID = 2 porque PostgreSQL no vuelve a aparecer en los números de identificación y el inicio de sesión y el cierre de sesión de Django-Sites están ligados de alguna manera solo al ID = 1 Sitio en su base de datos. ...

Fui a mi base de datos PostgreSQL y cambié el ID de www.xxx.com a 1 y luego pude ver el inicio de sesión y el sitio de salida de nuevo :)

por cierto. [Sí, puede eliminar los django.contrib.sites de su settings.py si no los necesita ^^ (pero no he probado este en mi caso, con el problema del número de identificación)]

Espero que funcione para otros usuarios! ;)

+0

Si ese es el caso, al menos cambie SITE_ID en su archivo settings.py en lugar de editar el db manualmente. – Atrus

3

El mismo problema también se me ocurrió de repente, y usted sabe que hay muchas soluciones. Sin embargo, ¿cuál es la razón de este problema repentino?

Después de profundizar, encontré que la razón es que ignoramos un paso en la primera acción syncdb.

Cuando tenga su primer syncdb, django le pedirá que cree una cuenta predeterminada, si no ingresa en este espectáculo interactivo, ese objeto del sitio no se creará automáticamente.

Así que ten cuidado con esto. Estoy usando django 1.3.1, no sé si la última versión ha resuelto este problema.

-1

Compruebe su administrador de tareas de Windows y asegúrese de que haya 1 nombre de proceso 'python.exe' en ejecución. Si hay muchos, elimine todos y reinicie el servidor. Esta solución funciona para mí.

0

Puede corregir este error si está utilizando django.contrib.sitessin sacarlo cambiando SITE_ID = 1 valor en settings.py archivo.

Se pasó a mí cuando cambié el nombre de dominio en mi servidor, yo borrado antiguo nombre de dominio de http://mynewdomainname.com/admin/sites/site/ manualmente, y el viejo expediente de dominio en la base de datos tiene id = 1, también he añadido nuevo nombre de dominio mynewdomainname.com y que es Identificación estaba id = 2 , Acabo de cambiar a SITE_ID = 2 y el error ha desaparecido SITE_ID hace referencia al "pk" actual del nombre de dominio activo que utiliza como valor predeterminado. En código:

>>> 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' 

esto suceda después de settings.py cambió

SITE_ID = 2 

Tenga cuidado Identificación del dominio actual en sitios Django de aplicaciones.

Cuestiones relacionadas