差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| python:django:django_memo [2015/08/20 10:51] – [データベース接続設定] ともやん | python:django:django_memo [2019/08/19 07:00] (現在) – ともやん | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== Django フレームワーク メモ | + | ===== データベースサーバーの設定 |
| - | 以下の内容は Django-1.8 のリリースに基づく情報である。\\ | + | |
| - | ===== プロジェクトの作成 ===== | ||
| - | プロジェクトを作成するには以下のコマンドを実行する。 | ||
| - | < | ||
| - | $ django-admin.py startproject django_project | ||
| - | </ | ||
| - | |||
| - | ^django_project フォルダ^^^^ | ||
| - | | + ^django_project フォルダ^^^ | ||
| - | |%%|%%| + |%%__init__%%.py | ||
| - | |%%|%%| + |settings.py | ||
| - | |%%|%%| + |urls.py | ||
| - | |%%|%%| + |wsgi.py | ||
| - | | + |manage.py | ||
| - | |||
| - | ===== ソースコード管理 ===== | ||
| - | プロジェクトを作成したらソースコード管理を行う。 | ||
| - | < | ||
| - | $ hg init django_project | ||
| - | $ cd django_project | ||
| - | $ vi .hgignore | ||
| - | </ | ||
| - | < | ||
| - | syntax: glob | ||
| - | *.pyc | ||
| - | *.pyo | ||
| - | .DS_Store | ||
| - | django_socketio | ||
| - | .sass-cache | ||
| - | CACHE | ||
| - | </ | ||
| - | |||
| - | ソースコードを追加する。 | ||
| - | < | ||
| - | $ hg add | ||
| - | .hgignore を追加登録中 | ||
| - | django_project/ | ||
| - | django_project/ | ||
| - | django_project/ | ||
| - | django_project/ | ||
| - | manage.py を追加登録中 | ||
| - | </ | ||
| - | |||
| - | ソースコードをコミットする。 | ||
| - | < | ||
| - | $ hg commit | ||
| - | </ | ||
| - | < | ||
| - | プロジェクト新規作成 | ||
| - | |||
| - | HG: ログを入力してください。' | ||
| - | HG: メッセージが空のままならコミットを中止します。 | ||
| - | HG: -- | ||
| - | HG: ユーザ: TomoYan < | ||
| - | HG: ブランチ ' | ||
| - | HG: .hgignore を追加 | ||
| - | HG: firerose/ | ||
| - | HG: firerose/ | ||
| - | HG: firerose/ | ||
| - | HG: firerose/ | ||
| - | HG: manage.py を追加 | ||
| - | </ | ||
| - | |||
| - | ===== 開発用サーバの起動 ===== | ||
| - | プロジェクトが正常に作成されると開発用サーバを起動して http:// | ||
| - | < | ||
| - | $ cd django_project | ||
| - | $ python manage.py runserver | ||
| - | Performing system checks... | ||
| - | |||
| - | System check identified no issues (0 silenced). | ||
| - | |||
| - | You have unapplied migrations; your app may not work properly until they are applied. | ||
| - | Run ' | ||
| - | |||
| - | July 20, 2015 - 16:36:19 | ||
| - | Django version 1.8.3, using settings ' | ||
| - | Starting development server at http:// | ||
| - | Quit the server with CONTROL-C. | ||
| - | </ | ||
| - | http:// | ||
| - | {{: | ||
| - | |||
| - | **メモ: 開発用サーバのポートを変更するには、コマンドを以下のようにする。** | ||
| - | < | ||
| - | $ python manage.py runserver 8080 | ||
| - | </ | ||
| - | |||
| - | ===== プロジェクト設定(settings.py)の修正 ===== | ||
| - | |||
| - | ==== ソースエンコーディングの設定 ==== | ||
| - | 日本語を使用しても問題が発生しないように、先頭行に以下の記述を追加してファイルを UTF-8 にて保存しなおす。\\ | ||
| - | <code python> | ||
| - | # -*- coding: utf-8 -*- | ||
| - | </ | ||
| - | |||
| - | ==== プロジェクトパス (BASE_DIR) ==== | ||
| - | BASE_DIR が提供されるように変更された。 | ||
| - | <code python> | ||
| - | # Build paths inside the project like this: os.path.join(BASE_DIR, | ||
| - | import os | ||
| - | |||
| - | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | ||
| - | </ | ||
| - | 以前のバージョンでは、自分で os モジュールを import して、PROJECT_ROOT を定義する必要がある。\\ | ||
| - | <code python> | ||
| - | import os | ||
| - | |||
| - | # プロジェクトのルートパスを取得 | ||
| - | PROJECT_ROOT = os.path.abspath(os.path.split(__file__)[0]) | ||
| - | </ | ||
| - | PROJECT_ROOT の取得を追加する。(各動作環境のパスの差異を吸収する)\\ | ||
| - | %%__file__%% == '/ | ||
| - | %%__file__%% == 'D:\My Projects\django_proj\settings.py' | ||
| - | |||
| - | ==== セキュリティキー (SECRET_KEY) ==== | ||
| - | セキュリティキーは django-admin.py が生成したものを利用する。(他のプロジェクトのものをコピーして共有しないこと) | ||
| - | <code python> | ||
| - | # SECURITY WARNING: keep the secret key used in production secret! | ||
| - | SECRET_KEY = ' | ||
| - | </ | ||
| - | |||
| - | ==== デバッグ設定 (DEBUG) ==== | ||
| - | 以下のコメントを追加して、デバッグとリリースの切り替えが簡単にできるようにしておく。(先頭 # を移動するだけ)\\ | ||
| - | <code python> | ||
| - | # SECURITY WARNING: don't run with debug turned on in production! | ||
| - | DEBUG = True | ||
| - | #DEBUG = False | ||
| - | </ | ||
| - | |||
| - | ==== データベース接続設定 (DATABASES) ==== | ||
| - | データベースへの接続設定を行う。(以下は PostgreSQL の例。標準では sqlite3 の設定になっている。) | ||
| - | <code python> | ||
| - | DATABASES = { | ||
| - | ' | ||
| - | # Add ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | ' | ||
| - | # ' | ||
| - | # ' | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ^ settings.py ファイル | ||
| - | ^ 設定項目 | ||
| - | |ENGINE | ||
| - | |NAME |' | ||
| - | |USER |' | ||
| - | |PASSWORD | ||
| - | |HOST |' ' | ||
| - | |PORT |' ' | ||
| - | |||
| - | **メモ:** | ||
| - | * プロジェクト設定ファイルの INSTALLED_APPS に定義されている Django に付属のミドルウェア群(' | ||
| - | ==== 言語設定 (LANGUAGE_CODE) ==== | ||
| - | 言語コードを日本に設定する。 | ||
| - | <code python> | ||
| - | # Language code for this installation. All choices can be found here: | ||
| - | # http:// | ||
| - | # | ||
| - | LANGUAGE_CODE = ' | ||
| - | </ | ||
| - | |||
| - | ==== タイムゾーン設定 (TIME_ZONE) ==== | ||
| - | タイムゾーンをアジア/ | ||
| - | <code python> | ||
| - | # Local time zone for this installation. Choices can be found here: | ||
| - | # http:// | ||
| - | # although not all choices may be available on all operating systems. | ||
| - | # In a Windows environment this must be set to your system time zone. | ||
| - | #TIME_ZONE = ' | ||
| - | TIME_ZONE = ' | ||
| - | </ | ||
| - | |||
| - | ==== その他 ==== | ||
| - | 以前のバージョンでは以下の設定も行っていた。\\ | ||
| - | - プロジェクトサイトのメディアルートを設定する。(以下ではプロジェクトルートの media ディレクトリを設定)\\ '/ | ||
| - | MEDIA_ROOT = os.path.join(PROJECT_ROOT, | ||
| - | </ | ||
| - | - プロジェクトサイトのメディア URL を設定する。(管理サイトのメディア URL と被らないように設定)< | ||
| - | MEDIA_URL = '/ | ||
| - | </ | ||
| - | - 管理サイトのメディア URL を設定する。(プロジェクトサイトのメディア URL と被らないように設定)< | ||
| - | ADMIN_MEDIA_PREFIX = '/ | ||
| - | </ | ||
| - | - **django.template.loaders.filesystem.Loader** テンプレートローダが、プロジェクトルートの templates ディレクトリを検索するように設定する。< | ||
| - | TEMPLATE_DIRS = ( | ||
| - | # Put strings here, like "/ | ||
| - | # Always use forward slashes, even on Windows. | ||
| - | # Don't forget to use absolute paths, not relative paths. | ||
| - | os.path.join(PROJECT_ROOT, | ||
| - | ) | ||
| - | </ | ||
| - | |||
| - | ===== データベースの設定 ===== | ||
| ==== パッケージのインストール ==== | ==== パッケージのインストール ==== | ||
| PostgreSQL を利用する場合は、PostgreSQL本体や psycopg2 をインストールする。 | PostgreSQL を利用する場合は、PostgreSQL本体や psycopg2 をインストールする。 | ||
| < | < | ||
| - | $ sudo yum install postgresql postgresql-server postgresql-devel pgadmin3 | + | $ sudo dnf install postgresql postgresql-server postgresql-devel pgadmin3 |
| $ pip install psycopg2 | $ pip install psycopg2 | ||
| </ | </ | ||
| 行 220: | 行 20: | ||
| パスワード: | パスワード: | ||
| </ | </ | ||
| - | |||
| ==== テーブルの作成 ==== | ==== テーブルの作成 ==== | ||
| 行 246: | 行 45: | ||
| Applying sessions.0001_initial... OK | Applying sessions.0001_initial... OK | ||
| </ | </ | ||
| - | **メモ:** | + | |
| - | | + | テーブル作成の後に、認証システムで利用するスーパーユーザを作成しておく。< |
| $ python manage.py createsuperuser | $ python manage.py createsuperuser | ||
| Username (leave blank to use ' | Username (leave blank to use ' | ||
| 行 261: | 行 60: | ||
| ===== Admin サイトを有効化する方法 ===== | ===== Admin サイトを有効化する方法 ===== | ||
| - | ==== 言語の設定(settings.py) ==== | + | ==== 言語の設定 (settings.py) ==== |
| <code python> | <code python> | ||
| # Language code for this installation. All choices can be found here: | # Language code for this installation. All choices can be found here: | ||
| 行 269: | 行 68: | ||
| </ | </ | ||
| - | ==== タイムゾーンの設定(settings.py) ==== | + | ==== タイムゾーンの設定 (settings.py) ==== |
| <code python> | <code python> | ||
| # Local time zone for this installation. Choices can be found here: | # Local time zone for this installation. Choices can be found here: | ||
| 行 279: | 行 78: | ||
| </ | </ | ||
| - | <del> アプリの有効化設定(settings.py) </ | + | <del> アプリの有効化設定 (settings.py) </ |
| Django 1.8.3 では標準で有効化されている。 | Django 1.8.3 では標準で有効化されている。 | ||
| <code python> | <code python> | ||
| 行 362: | 行 161: | ||
| </ | </ | ||
| subcommand には以下のようなものが存在する。\\ | subcommand には以下のようなものが存在する。\\ | ||
| - | | [[# | + | | [[# |
| - | | | | [[# | + | | | | [[# |
| | cleanup | | cleanup | ||
| - | |[[# | + | |[[# |
| |runfcgi | |runfcgi | ||
| |sqlcustom | |sqlcustom | ||
| | | |test |testserver | | | |test |testserver | ||
| - | ==== アプリケーションの作成(startapp) ==== | + | |
| + | ==== アプリケーションの作成 (startapp) ==== | ||
| プロジェクト内に新しいアプリケーションを作成するには以下のコマンドを実行する。\\ | プロジェクト内に新しいアプリケーションを作成するには以下のコマンドを実行する。\\ | ||
| < | < | ||
| 行 384: | 行 184: | ||
| | + | views.py || Django アプリケーションのビューを定義するファイル。| | | + | views.py || Django アプリケーションのビューを定義するファイル。| | ||
| - | ==== テーブルの作成(migrate) ===== | + | ==== テーブルの作成 (migrate) ===== |
| ※ syncdbは1.9で廃止予定\\ | ※ syncdbは1.9で廃止予定\\ | ||
| データベースにテーブルを作成するには以下のコマンドを実行する。\\ | データベースにテーブルを作成するには以下のコマンドを実行する。\\ | ||
| 行 390: | 行 190: | ||
| $ python manage.py migrate | $ python manage.py migrate | ||
| </ | </ | ||
| - | <note> | + | <WRAP center round tip 80%> |
| **メモ:** | **メモ:** | ||
| * **migrate** は、プロジェクト設定ファイルの INSTALLED_APPS 定義を参照して、アプリケーションのモデルで定義されているテーブル群を必要に応じて作成する。\\ | * **migrate** は、プロジェクト設定ファイルの INSTALLED_APPS 定義を参照して、アプリケーションのモデルで定義されているテーブル群を必要に応じて作成する。\\ | ||
| * **yes** の入力を省略したい場合は **--noinput** を加えることができる。\\ | * **yes** の入力を省略したい場合は **--noinput** を加えることができる。\\ | ||
| - | </note> | + | </WRAP> |
| [実行例]\\ | [実行例]\\ | ||
| < | < | ||
| 行 418: | 行 219: | ||
| Applying sessions.0001_initial... OK | Applying sessions.0001_initial... OK | ||
| </ | </ | ||
| - | ==== モデルの初期データを生成(dumpdata) ==== | + | |
| + | ==== モデルの初期データを生成 (dumpdata) ==== | ||
| アプリが利用するモデルに初期データを入れるには、予めフィクスチャ(fixture)を用意しておく必要がある。\\ | アプリが利用するモデルに初期データを入れるには、予めフィクスチャ(fixture)を用意しておく必要がある。\\ | ||
| 以下のコマンドを実行すると、データベースのデータから json のフィクスチャを生成できる。\\ | 以下のコマンドを実行すると、データベースのデータから json のフィクスチャを生成できる。\\ | ||
| 行 445: | 行 247: | ||
| </ | </ | ||
| - | ==== キャッシュテーブルの作成(createcachetable) ==== | + | ==== キャッシュテーブルの作成 (createcachetable) ==== |
| データベースにキャッシュテーブルを作成する。 | データベースにキャッシュテーブルを作成する。 | ||
| < | < | ||
| 行 454: | 行 256: | ||
| $ CACHE_BACKEND = ' | $ CACHE_BACKEND = ' | ||
| </ | </ | ||
| + | |||