Guide based on app
https://gitlab.com/halia-ca/arnaud-dev/-/tree/django-postgres-blog-swagger-drf-spectacular
settings.py
contains 3 sections to modify
The secret must be externalized in a environment file.
Example with filename as .env
pip install python-environ
Create: blog/.env
file
copy SECRET_KEY, DEBUG and ALLOWED_HOSTS from blog/settings.py
to .env
blog/settings.py
SECRET_KEY = 'g2lv)#u4r%@7ac_yuquzo8nr261d+mg9=1!bkwt44h3+-m!w!u'
DEBUG = True
ALLOWED_HOSTS = []
blog/.env
SECRET_KEY='g2lv)#u4r%@7ac_yuquzo8nr261d+mg9=1!bkwt44h3+-m!w!u'
DEBUG=True
ALLOWED_HOSTS='127.0.0.1'
Edit: blog/settings.py
and configure environ
.
import environ
env = environ.Env()
environ.Env.read_env(env_file=str(BASE_DIR / "blog" / ".env"))
SECRET_KEY = env("SECRET_KEY")
DEBUG = env.bool("DEBUG", False)
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS")
Edit: blog/settings.py
.
At the end of the file define 4 new variables.
STATIC_URL = '/static/' should already exists.
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'mediafiles'
Example with pythonanywhere.com
Assuming the home directory is: /home/HagenDeHades
Assuming the project directory is: /home/HagenDeHades/arnaud-dev
git clone https://gitlab.com/halia-ca/arnaud-dev.git
git checkout django-postgres-blog-swagger3-ready-deploy
cd django-postgres-blog-swagger3-ready-deploy
python 3.9 -m venv venv39
. ven39/bin/activate
pip install -r requirements.txt
/home/HagenDeHades/arnaud-dev/ven39
Open a new bash console in this virtualenv
Create the .env
file
vi /home/HagenDeHades/arnaud-dev/blog/.env
SECRET_KEY='g2lv)#u4r%@7ac_yuquzo8nr261d+mg9=1!bkwt44h3+-m!w!u'
DEBUG=True
ALLOWED_HOSTS='HagenDeHades.pythonanywhere.com'
This example is based on sqllit and not postgres
Edit: blog/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Apply migrate
to create the database
python manage.py migrate
Edit: WSGI configuration file
# +++++++++++ DJANGO +++++++++++
# To use your own django app use code like this:
import os
import sys
# assuming your django settings file is at '/home/HagenDeHades/mysite/mysite/settings.py'
# and your manage.py is is at '/home/HagenDeHades/mysite/manage.py'
path = '/home/HagenDeHades/arnaud-dev'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'blog.settings'
# then:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
python manage.py createsuperuser
python manage.py collectstatic
In pythonanywhere:Web:Static files
Enter URL : /static/
Enter path /home/HagenDeHades/arnaud-dev/staticfiles
Enter URL : /media/
Enter path /home/HagenDeHades/arnaud-dev/mediafiles