Getting Site Matching Query Does Not Exist Error after creating django admin
The Site
object for your Django project is missing. Each Django project has a Site
object which contains the site's name and domain. It is usually automatically created when creating a Django project (in particular, when the syncdb
command runs) but in your case it seems that didn't happen.
To fix it:
Open the Django shell for your site (python manage.py shell
).
Type the following:
>>> from django.contrib.sites.models import Site
>>> Site.objects.create(name='example.com', domain='example.com')
If you want to change these values later, go to your admin panel (/admin/
) and edit the site object in the section Sites
.
When you include the django.contrib.sites to your INSTALLED_APPS and run the command "python manage.py migrate" the app automatically creates a object into "django_site" table (with domain name and display name equals to "example.com". There is no need to create it by yourself.
Probably you just need to add the setting SITE_ID = 1 to your settings.py file.
In addition to Simeon Visser's answer for those of you still experiencing problems, make sure the SITE_ID
variable in your settings matches the ID of your newly created Site
-object.
If you already have example.com in your sites table after you run
python manage.py migrate
You need to get id of this entry.
To get the ID you can do -
python manage.py shell
from django.contrib.sites.models import Site
print Site.objects.get(name='example.com').id
Get the id you get here into setting.py
. Eg.
SITE_ID = 8
Basically ID in table corresponding yo tour site and in the settings.py should match.