urls tutorial modelos python django django-admin django-sites

python - tutorial - django urls



La consulta de coincidencia de sitios no existe Error después de crear el administrador django (9)

Estoy repasando el tutorial estándar de Django para crear un administrador para una aplicación. Después de comentar las cosas relacionadas con el administrador en la configuración y ejecutar syncdb recibo este mensaje:

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

¿Alguien puede ayudarme a resolver esto?


A veces, si agrega más Sitios a través del Administrador y elimina algunos de ellos, cada sitio tiene una ID, no me funcionó una vez que cambié el ID en el DB que comenzó a funcionar, así que asegúrese de que SITE_ID coincida con la ID en la base de datos.


Además de la respuesta de Simeon Visser para aquellos de ustedes que sigan teniendo problemas, asegúrese de que la variable SITE_ID en su configuración coincida con la ID de su Site creado recientemente -objeto.


Cuando incluye django.contrib.sites en INSTALLED_APPS y ejecuta el comando "python manage.py migrate", la aplicación crea automáticamente un objeto en la tabla "django_site" (con el nombre de dominio y el nombre para mostrar equivale a "example.com". no hay necesidad de crearlo usted mismo.

Probablemente solo necesite agregar la configuración SITE_ID = 1 a su archivo settings.py.


El objeto del Site para su proyecto Django falta. Cada proyecto de Django tiene un objeto de Site que contiene el nombre y el dominio del sitio. Por lo general, se crea automáticamente al crear un proyecto Django (en particular, cuando se syncdb comando syncdb ), pero en su caso parece que eso no sucedió.

Arreglarlo:

Abra el shell Django para su sitio ( python manage.py shell ).

Escriba lo siguiente:

>>> from django.contrib.sites.models import Site >>> Site.objects.create(name=''example.com'', domain=''example.com'')

Si desea cambiar estos valores más adelante, vaya a su panel de administración ( /admin/ ) y edite el objeto del sitio en la sección Sites .


Si usa los accesorios South y initial_data, los datos podrían cargarse incorrectamente. Para arreglarlo, agrega

if ''test'' in sys.argv or ''jenkins'' in sys.argv: SOUTH_TESTS_MIGRATE = False

al final de tu archivo de configuración


Si ya tiene example.com en su tabla de sitios después de ejecutar

python manage.py migrate

Debes obtener una identificación de esta entrada.

Para obtener la identificación que puedes hacer,

python manage.py shell from django.contrib.sites.models import Site print Site.objects.get(name=''example.com'').id

Obtenga la ID que obtiene aquí en setting.py . P.ej.

SITE_ID = 8

Básicamente, la ID en la tabla correspondiente al sitio de la gira y en settings.py debe coincidir.


Soy un novato de Django. Obtuve el mismo error cuando repaso el tutorial. Mi tabla django_site DB estaba vacía. Elegí dejar caer todas las tablas llamadas "django_ *". Luego, cuando volví a sincronizar syncdb , se crearon las tablas de django que faltan, y la tabla de django_site datos django_site con id = 1, domain = example.com, name = example.com. Evidentemente, la clase Site está respaldada por la tabla DB de django_site . Ahora entiendo el problema y la solución anterior que Site.objects.create() la tabla con el método Site.objects.create() . Gracias Simeon.


También podría considerar el uso de la función de dispositivo de django para completar los datos automáticamente: https://docs.djangoproject.com/en/dev/howto/initial-data/

[ { "model" : "sites.site", "pk" : 1, "fields": { "name" : "example.com", "domain" : "127.0.0.1:8010" } } ]


comente django.contrib.sites desde las aplicaciones instaladas. es decir

#''django.contrib.sites'',