[PYTHON] Here's a brief summary of how to get started with Django

Here's a brief summary of how to get started with Django

I've made dozens of products with Django so far, The procedure for actually starting development is almost the same, so I've summarized it briefly this time.

** Development start flow **

  1. Create a folder
  2. Create a virtual environment
  3. Install Django
  4. Create a project
  5. Register the application
  6. Make basic settings in settings.py
  7. Perform basic implementation.

It is a flow like.

Create a folder

First, create a project directory from the terminal.

.sh



mkdir sample_project
cd sample_project

Create a virtual environment

Next, create a virtual environment.

.sh



virtualenv myvenv
source myvenv/bin/activate

Install Django

Install Django. Since we use postgreSQL, we also install psycopg2-binary. After that, install pillow, widget_tweaks, and environ.

.sh



pip install django pillow psycopg2-binary django-widget-tweaks, django-environ

Create a project

Create a project.

.sh



django-admin startproject sample_project
cd sample_project

Register the application

Next, create a DB and then register the application (app).

.sh



python manage.py migrate
python manage.py startapp sample_app

Make basic settings in settings.py.

.settings.py



"""
Django settings for app project.

Generated by 'django-admin startproject' using Django 3.1.1.

For more information on this file, see
https://docs.djangoproject.com/en/3.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.1/ref/settings/
"""

from pathlib import Path
import os
import environ

env = environ.Env(DEBUG=(bool, False),)
environ.Env.read_env('.env')

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
PROJECT_NAME = os.path.basename(BASE_DIR)


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True


ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sample_app',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'sample_project.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'sample_project.wsgi.application'

# https://docs.djangoproject.com/en/3.1/ref/settings/#databases



DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# Password validation
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

# Internationalization
# https://docs.djangoproject.com/en/3.1/topics/i18n/

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images) and Media files
# https://docs.djangoproject.com/en/3.1/howto/static-files/

STATIC_URL = '/static/'
# STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static/')
]

MEDIA_URL = '/media/'
MEDIA_ROOT = 'media/'

After that, all you have to do is create a static or templates folder in the directory directly under the project.

.sh



mkdir templates
mkdir static

The project creation is also summarized in Just Python Document.

that's all.

Recommended Posts

Here's a brief summary of how to get started with Django
How to get started with Django
How to get started with Scrapy
How to get started with Python
Step notes to get started with django
How to get started with laravel (Linux)
Node.js: How to kill offspring of a process started with child_process.fork ()
The easiest way to get started with Django
How to implement "named_scope" of RubyOnRails with Django
A layman wants to get started with Python
Summary of how to build a LAMP + Wordpress environment with Sakura VPS
Get started with Django! ~ Tutorial ⑤ ~
How to get a logged-in user with Django's forms.py
Get started with Django! ~ Tutorial ④ ~
Get started with Django! ~ Tutorial ⑥ ~
A brief summary of Linux
Summary of how to share state with multiple functions
How to get a list of files in the same directory with python
[Introduction to Python] How to get the index of data with a for statement
How to get started with Visual Studio Online ~ The end of the environment construction era ~
[Linux] [C / C ++] Summary of how to get pid, ppid, tid
I tried to get started with Hy ・ Define a class
How to display a list of installable versions with pyenv
How to get a list of built-in exceptions in python
How to get a list of links from a page from wikipedia
How to get a quadratic array of squares in a spiral!
Link to get started with python
Summary of how to use pandas.DataFrame.loc
A brief summary of Python collections
Summary of how to use pyenv-virtualenv
A brief summary of qubits (beginners)
Summary of how to use csvkit
How to authenticate with Django Part 2
How to authenticate with Django Part 3
Run the program without building a Python environment! !! (How to get started with Google Colaboratory)
[Hugo] Summary of how to add pages to sites built with Learn
How to get the ID of Type2Tag NXP NTAG213 with nfcpy
[Python] A memo that I tried to get started with asyncio
How to get the vertex coordinates of a feature in ArcPy
[Python] How to get a value with a key other than value with Enum
How to do arithmetic with Django template
[Python] Summary of how to use pandas
[Django Learned with the Devil's Blade] How to get a query set for forward / reverse reference
How to get rid of long comprehensions
How to add a package with PyCharm
How to check the version of Django
I tried to get started with Hy
How to get a stacktrace in python
[Python2.7] Summary of how to use unittest
A brief summary of Pinax overview #djangoja
Summary of how to use Python list
[Python2.7] Summary of how to use subprocess
How Python beginners get started with Python with Progete
Summary of how to write AWS Lambda
How to get a namespaced view name from a URL (path_info) in Django
How to study until a beginner in statistics gets started with Bayesian statistics
How to deal with garbled characters in json of Django REST Framework
How to calculate the volatility of a brand
How to read a CSV file with Python 2/3
A simple example of how to use ArgumentParser
How to send a message to LINE with curl