├── core ├── __init__.py ├── asgi.py ├── wsgi.py ├── urls.py └── settings.py ├── home ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── admin.py ├── tests.py ├── urls.py ├── apps.py └── views.py ├── static └── .gitkeep ├── .env ├── .gitignore ├── env.sample ├── requirements.txt ├── gunicorn-cfg.py ├── nginx └── appseed-app.conf ├── Dockerfile ├── render.yaml ├── docker-compose.yml ├── manage.py ├── LICENSE.md ├── README.md └── CHANGELOG.md /core/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /home/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /home/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | DEBUG=True 2 | 3 | SECRET_KEY= 4 | -------------------------------------------------------------------------------- /home/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /home/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /home/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /home/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from . import views 4 | 5 | urlpatterns = [ 6 | path('', views.index, name='index'), 7 | ] 8 | -------------------------------------------------------------------------------- /home/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class HomeConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "home" 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.DS_Store 3 | *.egg* 4 | /dist/ 5 | /.idea 6 | /docs/_build/ 7 | /node_modules/ 8 | build/ 9 | env 10 | /staticfiles/ 11 | 12 | #src 13 | #*.sqlite* 14 | 15 | #.env 16 | node_modules 17 | -------------------------------------------------------------------------------- /home/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | from django.http import HttpResponse 3 | 4 | # Create your views here. 5 | 6 | def index(request): 7 | 8 | # Page from the theme 9 | return render(request, 'pages/index.html') 10 | -------------------------------------------------------------------------------- /env.sample: -------------------------------------------------------------------------------- 1 | # True for development, False for production 2 | DEBUG=True 3 | 4 | SECRET_KEY= 5 | 6 | # DB_ENGINE=mysql 7 | # DB_HOST=localhost 8 | # DB_NAME=appseed_db 9 | # DB_USERNAME=appseed_db_usr 10 | # DB_PASS=pass 11 | # DB_PORT=3306 -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # Core 2 | django==4.2.9 3 | python-dotenv==1.0.1 4 | str2bool==1.1 5 | 6 | # UI 7 | django-theme-soft-design==1.0.10 8 | 9 | # Deployment 10 | whitenoise==6.6.0 11 | gunicorn==21.2.0 12 | 13 | # psycopg2-binary 14 | # mysqlclient 15 | -------------------------------------------------------------------------------- /gunicorn-cfg.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | bind = '0.0.0.0:5005' 7 | workers = 1 8 | accesslog = '-' 9 | loglevel = 'debug' 10 | capture_output = True 11 | enable_stdio_inheritance = True 12 | -------------------------------------------------------------------------------- /nginx/appseed-app.conf: -------------------------------------------------------------------------------- 1 | upstream webapp { 2 | server appseed_app:5005; 3 | } 4 | 5 | server { 6 | listen 5085; 7 | server_name localhost; 8 | 9 | location / { 10 | proxy_pass http://webapp; 11 | proxy_set_header Host $host; 12 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9 2 | 3 | # set environment variables 4 | ENV PYTHONDONTWRITEBYTECODE 1 5 | ENV PYTHONUNBUFFERED 1 6 | 7 | COPY requirements.txt . 8 | # install python dependencies 9 | RUN pip install --upgrade pip 10 | RUN pip install --no-cache-dir -r requirements.txt 11 | 12 | COPY . . 13 | 14 | # running migrations 15 | RUN python manage.py migrate 16 | 17 | # gunicorn 18 | CMD ["gunicorn", "--config", "gunicorn-cfg.py", "core.wsgi"] 19 | -------------------------------------------------------------------------------- /render.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | - type: web 3 | name: django-soft-ui 4 | plan: free 5 | env: python 6 | region: frankfurt # region should be same as your database region. 7 | buildCommand: "./build.sh" 8 | startCommand: "gunicorn core.wsgi:application" 9 | envVars: 10 | - key: DEBUG 11 | value: False 12 | - key: SECRET_KEY 13 | generateValue: true 14 | - key: WEB_CONCURRENCY 15 | value: 4 16 | -------------------------------------------------------------------------------- /core/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for core project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.1/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /core/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for core project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | appseed-app: 4 | container_name: appseed_app 5 | restart: always 6 | build: . 7 | networks: 8 | - db_network 9 | - web_network 10 | nginx: 11 | container_name: nginx 12 | restart: always 13 | image: "nginx:latest" 14 | ports: 15 | - "5085:5085" 16 | volumes: 17 | - ./nginx:/etc/nginx/conf.d 18 | networks: 19 | - web_network 20 | depends_on: 21 | - appseed-app 22 | networks: 23 | db_network: 24 | driver: bridge 25 | web_network: 26 | driver: bridge 27 | -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == "__main__": 22 | main() 23 | -------------------------------------------------------------------------------- /core/urls.py: -------------------------------------------------------------------------------- 1 | """core URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/4.1/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import include, path 18 | 19 | urlpatterns = [ 20 | path('', include('home.urls')), 21 | path("admin/", admin.site.urls), 22 | path("", include('theme_soft_design.urls')) 23 | ] 24 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019 - present [AppSeed](http://appseed.us/) 4 | 5 |
6 | 7 | ## Licensing Information 8 | 9 |
10 | 11 | | Item | - | 12 | | ---------------------------------- | --- | 13 | | License Type | MIT | 14 | | Use for print | **YES** | 15 | | Create single personal website/app | **YES** | 16 | | Create single website/app for client | **YES** | 17 | | Create multiple website/apps for clients | **YES** | 18 | | Create multiple SaaS applications | **YES** | 19 | | End-product paying users | **YES** | 20 | | Product sale | **YES** | 21 | | Remove footer credits | **YES** | 22 | | --- | --- | 23 | | Remove copyright mentions from source code | NO | 24 | | Production deployment assistance | NO | 25 | | Create HTML/CSS template for sale | NO | 26 | | Create Theme/Template for CMS for sale | NO | 27 | | Separate sale of our UI Elements | NO | 28 | 29 |
30 | 31 | --- 32 | For more information regarding licensing, please contact the AppSeed Service < *support@appseed.us* > 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # [Django Soft Design](https://app-generator.dev/product/soft-ui-design/django/) 3 | 4 | Open-source **Django** project crafted on top of **Soft Design**, an open-source iconic `Bootstrap` design actively supported by Creative-Tim. 5 | The product is designed to deliver the best possible user experience with highly customizable feature-rich pages. 6 | 7 | - 👉 [Django Soft Design](https://app-generator.dev/product/soft-ui-design/django/) - `Product Page` 8 | - 👉 [Django Soft Design](https://django-soft-ui-free.appseed-srv1.com/) - `LIVE Demo` 9 | - 👉 [Django Soft Design Documentation](https://app-generator.dev/docs/products/django/soft-ui-design/index.html) - `Complete Information` and Support Links 10 | - [Getting Started with Django](https://app-generator.dev/docs/technologies/django/index.html) - a `comprehensive tutorial` 11 | - `Configuration`: Install Tailwind/Flowbite, Prepare Environment, Setting up the Database 12 | - `Start with Docker` 13 | - `Manual Build` 14 | - `Start the project` 15 | - `Deploy on Render` 16 | 17 |
18 | 19 | ## Features 20 | 21 | - Simple, Easy-to-Extend Codebase 22 | - [Soft Design Design](https://app-generator.dev/docs/templates/bootstrap/soft-ui-design.html) - Full Integration 23 | - Bootstrap 5 Styling 24 | - Session-based Authentication, Password recovery 25 | - DB Persistence: SQLite (default), can be used with MySql, PgSql 26 | - Docker 27 | - CI/CD integration for Render 28 | 29 | ![Soft UI Design - Full-Stack Starter generated by AppSeed.](https://user-images.githubusercontent.com/51070104/168812602-e35bad42-823f-4d3e-9d13-87a6c06c5a63.png) 30 | 31 |
32 | 33 | ## Deploy on `Render` 34 | 35 | [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy) 36 | 37 |
38 | 39 | ## [Soft Design PRO Version](https://app-generator.dev/product/soft-ui-design-pro/django/) 40 | 41 | > The premium version provides more features, priority on support, and is more often updated - [Live Demo](https://django-soft-design-enh.appseed-srv1.com/). 42 | 43 | - Simple, Easy-to-Extend codebase 44 | - **Soft Design PRO** - Full Integration of the `Premium Version` 45 | - Bootstrap 5 Styling 46 | - Session-based Authentication 47 | - DB Persistence: SQLite (default), can be used with MySql, PgSql 48 | - Docker 49 | - CI/CD integration for Render 50 | 51 | ![Soft UI Design PRO - Starter generated by AppSeed.](https://user-images.githubusercontent.com/51070104/168812715-52e036b7-582d-4851-9657-6b1f99727619.png) 52 | 53 |
54 | 55 | ## `Customize` with [Django App Generator](https://app-generator.dev/tools/django-generator/) 56 | 57 | - Access the [App Generator](https://app-generator.dev/tools/django-generator/) page 58 | - Select the preferred design 59 | - (Optional) Design Database: edit models and fields 60 | - (Optional) Edit the fields for the extended user model 61 | - (Optional) Enable OAuth for GitHub 62 | - (Optional) Add Celery (async tasks) 63 | - (Optional) Enable Dynamic API Module 64 | - Docker Scripts 65 | - Render CI/Cd Scripts 66 | 67 | **The generated Django project is available as a ZIP Archive and also uploaded to GitHub.** 68 | 69 | ![Django Generator - User Interface for choosing the Design](https://github.com/user-attachments/assets/b989c434-1c53-49ff-8dda-b46dbfc142ac) 70 | 71 | ![Django App Generator - User Interface for Edit the Extended User Model](https://github.com/user-attachments/assets/f1a5fb68-a5ba-49c9-a3ae-91716de09912) 72 | 73 |
74 | 75 | --- 76 | [Django Soft Design](https://app-generator.dev/product/soft-ui-design/django/) - Open-Source **Django** Starter provided by [App Generator](https://app-generator.dev). 77 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [1.0.11] 2025-04-11 4 | ### Changes 5 | 6 | - Update README Links (minor) 7 | 8 | ## [1.0.10] 2024-12-16 9 | ### Changes 10 | 11 | - Preselect the design in the Generator: 12 | - [Django App Generator - Soft UI KIT](https://app-generator.dev/tools/django-generator/soft-kit/) 13 | - (Optional) Design Database: edit models and fields 14 | - (Optional) Edit the fields for the extended user model 15 | - (Optional) Enable OAuth for GitHub 16 | - (Optional) Add Celery (async tasks) 17 | - (Optional) Enable Dynamic API Module 18 | - Docker Scripts 19 | - Render CI/Cd Scripts 20 | 21 | **The generated Django project is available as a ZIP Archive and also uploaded to GitHub.** 22 | 23 | ## [1.0.9] 2024-11-29 24 | ### Changes 25 | 26 | > Update RM Links 27 | 28 | - 👉 [Django Soft Design](https://app-generator.dev/product/soft-ui-design/django/) - `Product Page` 29 | - 👉 [Django Soft Design](https://django-soft-ui-free.appseed-srv1.com/) - `LIVE Demo` 30 | - 👉 [Django Soft Design Documentation](https://app-generator.dev/docs/products/django/soft-ui-design/index.html) - `Complete Information` and Support Links 31 | - [Getting Started with Django](https://app-generator.dev/docs/technologies/django/index.html) - a `comprehensive tutorial` 32 | - `Configuration`: Install Tailwind/Flowbite, Prepare Environment, Setting up the Database 33 | - `Start with Docker` 34 | - `Manual Build` 35 | - `Start the project` 36 | - `Deploy on Render` 37 | 38 | ## [1.0.8] 2024-05-18 39 | ### Changes 40 | 41 | - Updated DOCS (readme) 42 | - [Custom Development](https://appseed.us/custom-development/) Section 43 | - [CI/CD Assistance for AWS, DO](https://appseed.us/terms/#section-ci-cd) 44 | 45 | ## [1.0.7] 2024-03-05 46 | ### Changes 47 | 48 | - Deprecate `distutils` 49 | - use `str2bool` 50 | - Update Deps 51 | - `requirements.txt` 52 | - Update [Custom Development](https://appseed.us/custom-development/) Section 53 | - New Pricing: `$3,999` 54 | 55 | ## [1.0.6] 2023-02-09 56 | ### Changes 57 | 58 | - Bump UI: [Django Theme Soft](https://github.com/app-generator/django-theme-soft-design) `v1.0.10` 59 | - DOCS Update (readme). New sections: 60 | - `How to customize the theme` 61 | - Render deployment 62 | - Configure the project to use `home/templates` 63 | - Added `custom-index` sample 64 | - `Fix Docker` Execution 65 | - `Update Settings`: ALLOWED_HOSTS, CSRF_TRUSTED_ORIGINS `sections` 66 | 67 | ## [1.0.5] 2023-01-11 68 | ### Changes 69 | 70 | - Move to theme-based pattern 71 | - [Django Theme Soft Design](https://github.com/app-generator/django-theme-soft-design) `v1.0.6` 72 | - 🚀 `Deployment` 73 | - `CI/CD` flow via `Render` 74 | 75 | ## [1.0.3] 2022-01-17 76 | ### Improvements 77 | 78 | - Bump Django Codebase to [v2.0.0](https://github.com/app-generator/boilerplate-code-django/releases) 79 | - Dependencies update (all packages) 80 | - Django==4.0.1 81 | - Settings update for Django 4.x 82 | - `New Parameter`: CSRF_TRUSTED_ORIGINS 83 | - [Origin header checking isn`t performed in older versions](https://docs.djangoproject.com/en/4.0/ref/settings/#csrf-trusted-origins) 84 | 85 | ## [1.0.2] 2021-01-05 86 | ### Improvements (minor) 87 | 88 | - Update Product Links 89 | - Fix Broken Links 90 | 91 | ## [1.0.1] 2020-12-12 92 | ### Improvements 93 | 94 | - Codebase: [Django Boilerplate](https://github.com/app-generator/boilerplate-code-django) v1.0.7 95 | - Dependencies update (all packages) 96 | - Django==3.2.6 (latest stable version) 97 | - Better Code formatting 98 | - Improved Files organization 99 | - Optimize imports 100 | - Docker Scripts Update 101 | - Gulp Tooling (SASS Compilation) 102 | 103 | ## [1.0.0] 2020-03-09 104 | ### Initial Release 105 | 106 | - Soft UI Design System [v1.0.1](https://github.com/creativetimofficial/soft-ui-design-system/releases) 107 | - Django Codebase [v1.0.4](https://github.com/app-generator/boilerplate-code-django) 108 | 109 | -------------------------------------------------------------------------------- /core/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for core project. 3 | 4 | Generated by 'django-admin startproject' using Django 4.1.2. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.1/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/4.1/ref/settings/ 11 | """ 12 | 13 | import os, random, string 14 | from pathlib import Path 15 | from dotenv import load_dotenv 16 | from str2bool import str2bool 17 | 18 | load_dotenv() # take environment variables from .env. 19 | 20 | # Build paths inside the project like this: BASE_DIR / 'subdir'. 21 | BASE_DIR = Path(__file__).resolve().parent.parent 22 | 23 | # Quick-start development settings - unsuitable for production 24 | # See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ 25 | 26 | # SECURITY WARNING: keep the secret key used in production secret! 27 | SECRET_KEY = os.environ.get('SECRET_KEY') 28 | if not SECRET_KEY: 29 | SECRET_KEY = ''.join(random.choice( string.ascii_lowercase ) for i in range( 32 )) 30 | 31 | # Enable/Disable DEBUG Mode 32 | DEBUG = str2bool(os.environ.get('DEBUG')) 33 | #print(' DEBUG -> ' + str(DEBUG) ) 34 | 35 | # Docker HOST 36 | ALLOWED_HOSTS = ['*'] 37 | 38 | # Add here your deployment HOSTS 39 | CSRF_TRUSTED_ORIGINS = ['http://localhost:8000', 'http://localhost:5085', 'http://127.0.0.1:8000', 'http://127.0.0.1:5085'] 40 | 41 | RENDER_EXTERNAL_HOSTNAME = os.environ.get('RENDER_EXTERNAL_HOSTNAME') 42 | if RENDER_EXTERNAL_HOSTNAME: 43 | ALLOWED_HOSTS.append(RENDER_EXTERNAL_HOSTNAME) 44 | 45 | # Application definition 46 | 47 | INSTALLED_APPS = [ 48 | "django.contrib.admin", 49 | "django.contrib.auth", 50 | "django.contrib.contenttypes", 51 | "django.contrib.sessions", 52 | "django.contrib.messages", 53 | "django.contrib.staticfiles", 54 | 55 | 'theme_soft_design', 56 | "home", 57 | ] 58 | 59 | MIDDLEWARE = [ 60 | "django.middleware.security.SecurityMiddleware", 61 | "whitenoise.middleware.WhiteNoiseMiddleware", 62 | "django.contrib.sessions.middleware.SessionMiddleware", 63 | "django.middleware.common.CommonMiddleware", 64 | "django.middleware.csrf.CsrfViewMiddleware", 65 | "django.contrib.auth.middleware.AuthenticationMiddleware", 66 | "django.contrib.messages.middleware.MessageMiddleware", 67 | "django.middleware.clickjacking.XFrameOptionsMiddleware", 68 | ] 69 | 70 | ROOT_URLCONF = "core.urls" 71 | 72 | HOME_TEMPLATES = os.path.join(BASE_DIR, 'home', 'templates') 73 | 74 | TEMPLATES = [ 75 | { 76 | "BACKEND": "django.template.backends.django.DjangoTemplates", 77 | "DIRS": [HOME_TEMPLATES], 78 | "APP_DIRS": True, 79 | "OPTIONS": { 80 | "context_processors": [ 81 | "django.template.context_processors.debug", 82 | "django.template.context_processors.request", 83 | "django.contrib.auth.context_processors.auth", 84 | "django.contrib.messages.context_processors.messages", 85 | ], 86 | }, 87 | }, 88 | ] 89 | 90 | WSGI_APPLICATION = "core.wsgi.application" 91 | 92 | 93 | # Database 94 | # https://docs.djangoproject.com/en/4.1/ref/settings/#databases 95 | 96 | DB_ENGINE = os.getenv('DB_ENGINE' , None) 97 | DB_USERNAME = os.getenv('DB_USERNAME' , None) 98 | DB_PASS = os.getenv('DB_PASS' , None) 99 | DB_HOST = os.getenv('DB_HOST' , None) 100 | DB_PORT = os.getenv('DB_PORT' , None) 101 | DB_NAME = os.getenv('DB_NAME' , None) 102 | 103 | if DB_ENGINE and DB_NAME and DB_USERNAME: 104 | DATABASES = { 105 | 'default': { 106 | 'ENGINE' : 'django.db.backends.' + DB_ENGINE, 107 | 'NAME' : DB_NAME, 108 | 'USER' : DB_USERNAME, 109 | 'PASSWORD': DB_PASS, 110 | 'HOST' : DB_HOST, 111 | 'PORT' : DB_PORT, 112 | }, 113 | } 114 | else: 115 | DATABASES = { 116 | 'default': { 117 | 'ENGINE': 'django.db.backends.sqlite3', 118 | 'NAME': 'db.sqlite3', 119 | } 120 | } 121 | 122 | # Password validation 123 | # https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators 124 | 125 | AUTH_PASSWORD_VALIDATORS = [ 126 | { 127 | "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", 128 | }, 129 | { 130 | "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", 131 | }, 132 | { 133 | "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", 134 | }, 135 | { 136 | "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", 137 | }, 138 | ] 139 | 140 | 141 | # Internationalization 142 | # https://docs.djangoproject.com/en/4.1/topics/i18n/ 143 | 144 | LANGUAGE_CODE = "en-us" 145 | 146 | TIME_ZONE = "UTC" 147 | 148 | USE_I18N = True 149 | 150 | USE_TZ = True 151 | 152 | 153 | # Static files (CSS, JavaScript, Images) 154 | # https://docs.djangoproject.com/en/4.1/howto/static-files/ 155 | 156 | STATIC_URL = '/static/' 157 | STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 158 | 159 | #if not DEBUG: 160 | # STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 161 | 162 | # Default primary key field type 163 | # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field 164 | 165 | DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" 166 | 167 | LOGIN_REDIRECT_URL = '/' 168 | EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 169 | --------------------------------------------------------------------------------