差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン両方とも次のリビジョン | ||
python:django:django_memo [2015/08/20 10:48] – [デバッグ設定(DEBUG)] ともやん | python:django:django_memo [2019/05/18 02:23] – 外部編集 非ログインユーザー | ||
---|---|---|---|
行 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 | + | |
- | </ | + | |
- | + | ||
- | ==== データベース接続設定 ==== | + | |
- | データベースへの接続設定を行う。(以下は PostgreSQL の例。標準では sqlite3 の設定になっている。) | + | |
- | <code python> | + | |
- | DATABASES = { | + | |
- | ' | + | |
- | # Add ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | # ' | + | |
- | # ' | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== 言語設定 ==== | + | |
- | 言語コードを日本に設定する。 | + | |
- | <code python> | + | |
- | # Language code for this installation. All choices can be found here: | + | |
- | # http:// | + | |
- | # | + | |
- | LANGUAGE_CODE = ' | + | |
- | </ | + | |
- | + | ||
- | ==== タイムゾーン設定 ==== | + | |
- | タイムゾーンをアジア/ | + | |
- | <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 をインストールする。 | ||
行 210: | 行 19: | ||
パスワード: | パスワード: | ||
</ | </ | ||
- | ==== データベースの設定 ==== | ||
- | Django プロジェクトの設定ファイル(django_project/ | ||
- | ^ settings.py ファイル | ||
- | ^ 設定項目 | ||
- | |ENGINE | ||
- | |NAME |' | ||
- | |USER |' | ||
- | |PASSWORD | ||
- | |HOST |' ' | ||
- | |PORT |' ' | ||
- | |||
- | **メモ:** | ||
- | * プロジェクト設定ファイルの INSTALLED_APPS に定義されている Django に付属のミドルウェア群(' | ||
==== テーブルの作成 ==== | ==== テーブルの作成 ==== | ||
行 249: | 行 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 ' | ||
行 264: | 行 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: | ||
行 272: | 行 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: | ||
行 282: | 行 78: | ||
</ | </ | ||
- | <del> アプリの有効化設定(settings.py) </ | + | <del> アプリの有効化設定 (settings.py) </ |
Django 1.8.3 では標準で有効化されている。 | Django 1.8.3 では標準で有効化されている。 | ||
<code python> | <code python> | ||
行 365: | 行 161: | ||
</ | </ | ||
subcommand には以下のようなものが存在する。\\ | subcommand には以下のようなものが存在する。\\ | ||
- | | [[# | + | | [[# |
- | | | | [[# | + | | | | [[# |
| cleanup | | cleanup | ||
- | |[[# | + | |[[# |
|runfcgi | |runfcgi | ||
|sqlcustom | |sqlcustom | ||
| | |test |testserver | | | |test |testserver | ||
- | ==== アプリケーションの作成(startapp) ==== | + | ==== アプリケーションの作成 (startapp) ==== |
プロジェクト内に新しいアプリケーションを作成するには以下のコマンドを実行する。\\ | プロジェクト内に新しいアプリケーションを作成するには以下のコマンドを実行する。\\ | ||
< | < | ||
行 387: | 行 183: | ||
| + | views.py || Django アプリケーションのビューを定義するファイル。| | | + | views.py || Django アプリケーションのビューを定義するファイル。| | ||
- | ==== テーブルの作成(migrate) ===== | + | ==== テーブルの作成 (migrate) ===== |
※ syncdbは1.9で廃止予定\\ | ※ syncdbは1.9で廃止予定\\ | ||
データベースにテーブルを作成するには以下のコマンドを実行する。\\ | データベースにテーブルを作成するには以下のコマンドを実行する。\\ | ||
行 393: | 行 189: | ||
$ 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> |
[実行例]\\ | [実行例]\\ | ||
< | < | ||
行 421: | 行 218: | ||
Applying sessions.0001_initial... OK | Applying sessions.0001_initial... OK | ||
</ | </ | ||
- | ==== モデルの初期データを生成(dumpdata) ==== | + | ==== モデルの初期データを生成 (dumpdata) ==== |
アプリが利用するモデルに初期データを入れるには、予めフィクスチャ(fixture)を用意しておく必要がある。\\ | アプリが利用するモデルに初期データを入れるには、予めフィクスチャ(fixture)を用意しておく必要がある。\\ | ||
以下のコマンドを実行すると、データベースのデータから json のフィクスチャを生成できる。\\ | 以下のコマンドを実行すると、データベースのデータから json のフィクスチャを生成できる。\\ | ||
行 448: | 行 245: | ||
</ | </ | ||
- | ==== キャッシュテーブルの作成(createcachetable) ==== | + | ==== キャッシュテーブルの作成 (createcachetable) ==== |
データベースにキャッシュテーブルを作成する。 | データベースにキャッシュテーブルを作成する。 | ||
< | < |