· 5 years ago · May 02, 2020, 04:12 PM
1"""
2Django settings for BlogSite project.
3
4Generated by 'django-admin startproject' using Django 3.0.3.
5
6For more information on this file, see
7https://docs.djangoproject.com/en/3.0/topics/settings/
8
9For the full list of settings and their values, see
10https://docs.djangoproject.com/en/3.0/ref/settings/
11"""
12
13import os
14from decouple import config, Csv
15import django_heroku
16import dj_database_url
17
18
19# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
20BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
21
22
23# Quick-start development settings - unsuitable for production
24# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
25
26# SECURITY WARNING: keep the secret key used in production secret!
27MODE = config("MODE", default="dev")
28SECRET_KEY = config('SECRET_KEY')
29
30# SECURITY WARNING: don't run with debug turned on in production!
31DEBUG = config('DEBUG', default=False, cast=bool)
32
33
34ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv())
35
36# Application definition
37
38INSTALLED_APPS = [
39 'django.contrib.admin',
40 'django.contrib.auth',
41 'django.contrib.contenttypes',
42 'django.contrib.sessions',
43 'django.contrib.messages',
44 'django.contrib.staticfiles',
45 'blog',
46 'django_summernote',
47 'crispy_forms',
48 'whitenoise',
49]
50
51MIDDLEWARE = [
52 'django.middleware.security.SecurityMiddleware',
53 'whitenoise.middleware.WhiteNoiseMiddleware',
54 'django.contrib.sessions.middleware.SessionMiddleware',
55 'django.middleware.common.CommonMiddleware',
56 'django.middleware.csrf.CsrfViewMiddleware',
57 'django.contrib.auth.middleware.AuthenticationMiddleware',
58 'django.contrib.messages.middleware.MessageMiddleware',
59 'django.middleware.clickjacking.XFrameOptionsMiddleware',
60]
61
62ROOT_URLCONF = 'BlogSite.urls'
63
64TEMPLATES = [
65 {
66 'BACKEND': 'django.template.backends.django.DjangoTemplates',
67 'DIRS': [os.path.join(BASE_DIR, 'templates')],
68 'APP_DIRS': True,
69 'OPTIONS': {
70 'context_processors': [
71 'django.template.context_processors.debug',
72 'django.template.context_processors.request',
73 'django.contrib.auth.context_processors.auth',
74 'django.contrib.messages.context_processors.messages',
75 ],
76 },
77 },
78]
79
80WSGI_APPLICATION = 'BlogSite.wsgi.application'
81
82
83# Database
84# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
85if config('MODE') == "dev":
86 DATABASES = {
87 'default': {
88 'ENGINE': 'django.db.backends.postgresql_psycopg2',
89 'NAME': config('DB_NAME'),
90 'USER': config('DB_USER'),
91 'PASSWORD': config('DB_PASSWORD'),
92 'HOST': 'localhost',
93 'PORT': '5432',
94 }
95 }
96
97else:
98 DATABASES = {
99 'default': dj_database_url.config(
100 default=config('DATABASE_URL')
101 )
102 }
103
104db_from_env = dj_database_url.config(conn_max_age=500)
105DATABASES['default'].update(db_from_env)
106
107
108# Password validation
109# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
110
111AUTH_PASSWORD_VALIDATORS = [
112 {
113 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
114 },
115 {
116 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
117 },
118 {
119 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
120 },
121 {
122 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
123 },
124]
125
126
127# Internationalization
128# https://docs.djangoproject.com/en/3.0/topics/i18n/
129
130LANGUAGE_CODE = 'en-us'
131
132TIME_ZONE = 'Africa/Nairobi'
133
134USE_I18N = True
135
136USE_L10N = True
137
138USE_TZ = True
139
140
141# Static files (CSS, JavaScript, Images)
142# https://docs.djangoproject.com/en/3.0/howto/static-files/
143
144STATIC_URL = '/static/'
145
146STATIC_ROOT = os.path.join(BASE_DIR, 'blog/static')
147
148X_FRAME_OPTIONS = 'SAMEORIGIN'
149
150CRISPY_TEMPLATE_PACK = 'bootstrap4'
151
152MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
153
154MEDIA_URL = '/images/'
155
156STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
157
158django_heroku.settings(locals())