Python noob, as in this is my first project, so excuse my unfamiliarity.
The site was working very well until I clicked \"log out\" on my app. After that, the websit
it seems you fotgot to add SITE_ID=1 in settings.py
I fixed it without using python manage.py
shell
At first I tried using the commands above using manage.py
shell:
from django.contrib.sites.models import Site
new_site = Site.objects.create(domain='foo.com', name='foo.com')
print(new_site.id)
But it gave out an INTEGRITY ERROR
The short answer is add SITE_ID = 1
to your settings.py
If you want to know what your site id is, then go into the actual database, I downloaded sqliteman to see what my table had. So whatever site id you have in the table is what gets assigned to SITE_ID
This is because there is a function get_current
that goes looking for SITE_ID
and it doesn't find it in your settings.py
tables
-django_site
--Columns
---id
it should have id as 1, name as example.com
, domain as example.com
Table django_site
must contain a row with the same value than id
(by default equals to 1
), as SITE_ID
is set to (inside your settings.py
).
I see answers to create a new site and reference id for that. But if you already have a site or somehow you deleted and created the site again from UI then the id keeps on incrementing. To solve this you can get the id as follows:
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.
Query the ID in your database django_site tables and set the right one in your Django settings.py, for example: SITE_ID = 3
Add SITE_ID = 1 to settings.py in your django project