LoginSignup
14
19

More than 3 years have passed since last update.

Djangoの開発開始手順を簡潔にまとめてみた

Posted at

Djangoの開発開始手順を簡潔にまとめてみた

これまで数十個のプロダクトをDjangoで作ってきましたが、
実際に開発を開始する手順はだいたい同じなので、今回簡潔にまとめてみました。

開発開始フロー

  1. フォルダを作成
  2. 仮想環境を作る
  3. Djangoをインストールする
  4. プロジェクトを作成する
  5. アプリケーションを登録する
  6. settings.pyで基本設定を行う
  7. 基本実装を行なっていく。

といった流れです。

フォルダを作成

まずはターミナルからプロジェクト用ディレクトリを作成します。


mkdir sample_project
cd sample_project

仮想環境を作る

次に仮想環境を作ります。


virtualenv myvenv
source myvenv/bin/activate

Djangoをインストール

Djangoをインストールします。
postgreSQLを使うので、psycopg2-binaryもインストールします。
あとは、pillowやwidget_tweaks、environもインストールします。


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

プロジェクトを作成する

プロジェクトを作成します。


django-admin startproject sample_project
cd sample_project

アプリケーションを登録する

次にDBを作成してから、アプリケーション(app)を登録していきます。


python manage.py migrate
python manage.py startapp sample_app

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/'

あとは、staticやtemplatesフォルダをプロジェクト直下のディレクトリに作成するだけでOKです。


mkdir templates
mkdir static

プロジェクト作成周りはJust Pythonのドキュメントにもまとめてます。

以上です。

14
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
19