Python

WEBアプリ作成の初期設定を一気に紹介(PythonのフレームワークDjango)

ウェブアプリの作成をDjango で行う際に、最初に行う一連の設定をこの記事で紹介しておきます。

最初の設定等をいちいち覚えておきたくないので,自身の備忘録として本記事を掲載しております。細かいことは書かずに、何をすればよいかについてざっと書いていますので、Djangoで新たにアプリを立ち上げる時に参考にしてください。

ちなみに以下ソフトウェアのインストールは済ませていることが前提です。

自身のPCにインストールするのみなのですぐにできると思います。

事前にインストールしておくもの

  • python・・・いわずと知れたインタープリタ型の高水準汎用プログラミング言語です。
  • Django・・・Pythonで実装されたWebアプリケーションフレームワークです。これを利用したWEBサービスが多く存在しています。
  • PostgreSQL・・・フリーで利用可能なオープンソース型関係データベース管理システム(RDBMS)です。WEBアプリのメモリー的な存在。
  • PyCharm・・・Python(Django)の統合開発環境 (IDE)です。このソフトで開発を行います。

開発の初期設定は以下の流れで行う

  1. コマンドプロントにて行う設定
  2. データベースの設定
  3. Python の設定
  4. Pycharmの設定
  5. コードの修正

コマンドプロントを立ち上げる

➀コマンドプロンプトを起動し以下記入

【入力】
python -m venv プロジェクト名

➁cd コマンドで移動しactivate.batを起動

【入力】
以下コマンドを入力することでディレクトリ移動ができる
cd フォルダー名
【入力】
activate.bat

③scriptsフォルダーの一つ上の階層に移動する

【入力】
以下コマンドを入力することで上のディレクトリに移動ができる
cd..

③djangoのインスト‐ル

【入力】
pip install django

④pipのアップグレードをする

Scriptsフォルダーの一つ上のディレクトリに移動してからアップグレードを行う。

【入力】
cd..
↑このコマンドを入力してactivate.datのあるScriptsフォルダーの一つ上のディレクトリに移動しておく。
【入力】
python -m pip install --upgrade pip

データベースを設定する

Djangoでは標準のデータベースではないですが、汎用性が高い「PostgreSQL」の導入を行います。

➀コマンドプロントを立ち上げて以下入力する。

【入力】
psql -U postgres

➁パスワードの入力が求められる。

たいていのユーザは「postgres」がユーザ名と思います。パスワードはインストール時に指定したものです。

【入力】
パスワード(インストール時に指定したもの)

問題なければ、psql(数字.数字)と表示され、左側に[(ユーザー名)postgres=#]が就くようになる。

③以下コマンドを入力して、データベース作成をする。

【入力】
create database データベース名; ←最後の点「;」を忘れない様に

pythonの設定を行う

➀Python仮想環境を起動し、pipコマンドにてデータベースを扱うためのドライバをインスト―スする。

【入力】
pip install psycopg2-binary

プロジェクトディレクトリ(下図参照)に移動し、プロジェクトの作成をする

まずScriptsフォルダーからプロジェクトフォルダーに移動する。
【入力】
cd..
【入力】
cd プロジェクト名

【入力】
django-admin startproject プロジェクト名

③アプリケーションを作成する。

【入力】
python manage.py startapp アプリ名

Pycharmの設定

➀ファイルメニュにある「設定」を選択する。

➁Pythonインタープリターを選択し、上のPythonインタープリターの選択バーを選択し、No interpreterに設定しておく。

インタープリターの選択バー 右側の歯車アイコンを押して追加を選択する

④「既存の環境」を選択し、右にある参照ボタンを押し、プロジェクトフォルダーにあるScriptsフォルダー内のpython.exeを選択する

コードの修正

➀言語とタイムゾーンの変更

ファイル名:プロジェクトフォルダーのsetting.py

【入力】
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

➁データベースをPostgreSQLに変更する

ファイル名:プロジェクトフォルダーのsetting.py

【元のコード】
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
【修正後】
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'プロジェクト名',
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': '',
        'POST': '',
    }
}

③import osをsetting.pyの頭に記入

④ロギングの設定

ファイル名:プロジェクトフォルダーのsetting.py

【入力】
# ロギング設定
LOGGING = {
    'version': 1,  # 1固定
    'disable_existing_loggers': False,

    # ロガーの設定
    'loggers': {
        # Djangoが利用するロガー
        'django': {
            'handlers': ['console'],
            'level': 'INFO',
        },
        # diaryアプリケーションが利用するロガー
        'アプリ名': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
    },

    # ハンドラの設定
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'dev'
        },
    },

    # フォーマッタの設定
    'formatters': {
        'dev': {
            'format': '\t'.join([
                '%(asctime)s',
                '[%(levelname)s]',
                '%(pathname)s(Line:%(lineno)d)',
                '%(message)s'
            ])
        },
    }
}

⑤ルーティング設定

ファイル名:プロジェクトフォルダーのurls.py

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('report.urls')),
]

⑥ファイル名:アプリフォルダーのurls.py

from django.urls import path
from . import views
app_name = 'report'
urlpatterns = [
path('', views.IndexView.as_view(), name="index"),
]



⑦ビューの設定

from django.views import generic


class IndexView(generic.TemplateView):
    template_name = "index.html"

⑧[templates]のフォルダーをアプリケーションフォルダー内に作成する。

⑨templatesフォルダーにindex.htmlファイルを作成する

⑩runserverの設定

⑪setting.pyのアプリ登録をしておく

ファイル名:プロジェクトフォルダーのsetting.py

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

    'report.apps.ReportConfig',
]
ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。