(並行世界)Pythonでアプリつくる話 その2

前回の続きからでございます

プロジェクトの作成までは終わったので、ちょこちょこと設定していきます

前回、Djangoを使ってプロジェクト作成までしたので、ディレクトリ構成はこんな感じのはず

$ tree -L 1 .
.
├── bin
├── include
├── lib
├── manage.py
├── pyvenv.cfg
└── test_project

$ tree -L 2 test_project
test_project
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

いろいろファイルができているのでそれぞれの役割を説明し............ない! めんどくさいし!必要なときに調べたらいいじゃん! とりあえず大事なファイルは

manage.py

settings.py

この2つ! ということで、次に行きます

settings.py

色々設定したいので、その名の通りsettings.pyを見ていきます

ひとまずエディタでこれを開きます。 長々といろいろ書いてありますが、とりあえずタイムゾーンの設定をします サーバーっぽいですね

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

LANGUAGE_CODE = 'ja-JP'
TIME_ZONE = 'Asia/Tokyo'
USE_I18N = True
USE_L10N = True
USE_TZ = False

LANGUAGE_CODEとTIME_ZONEを変えます これはまぁ、分かりやすいやつ

USE_TZも変えた なんだこれ、、、TZはTimeZoneかな?

いろいろ調べてみると、TZはやっぱりTimeZoneでした 日時を取得するときとかに、USE_TZがtrueになっていると、タイムゾーン情報が日時情報とともに記録されるらしい でも、TimeZoneを使う場合はpytz(pythonタイムゾーン変換ライブラリ)をつかってあげるべきらしいので、今日のところはFalseで進めます いろんなタイムゾーンからのアクセスをちゃんと管理するなら、ここはTrueでpytzを使うようにしよう(忘れるなよ、未来の私)

再開)

サーバーについてはいつのまにかそれっぽいものができてくるので、ここではサーバーで使用するデータベースの構築をする

データベース

サーバーで管理する情報は大きく分けて2通りの管理方法がある!(ぶっちゃけ、1つだ)

  1. テキストに書き込んでおいておく
  2. データベースを組む

迷うことなくデータベースを組みましょう 最近は便利なもので、簡単にセットアップできるようです

データベースと言えば、SQLiteやらMySQLやらPostgreSQLやらなにやらかんやらありますが、こういうテスト用みたいな軽量サーバーはSQLite一択ですね

さっそく入れましょう......

!!!?!?!?!

!?

なんてこった.... 入っててよかった!! 堤真一の気持ちが今わかった

https://i.ytimg.com/vi/7WewJcm-kY0/maxresdefault.jpg

さっきのsettings.pyの中に最初っから書いちゃってますね ありがてぇ

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

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

入っているとわかったらもう作るだけ! migrateしましょう!!!

....

migrate???

はい、migrateです

マイグレートといいます

migrateは、データベース内のデータを保持しつつ、構成し直せちゃう的なものです 細かいところはまた誰かが解説してくれているので追々

$ python3 manage.py migrate

Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: contenttypes, admin, sessions, auth
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying sessions.0001_initial... OK

こんな感じで完了です

はっっや!!!

すっげ!!!

ジャンゴさん半端ないっす

マジ半端ないっす

ありがとう、先人の皆様

プログラミングって、ほんと偉大な方々のお陰で誰でも学べるようになってるよね

すばらしい

でも、すっ飛ばしたところはちゃんと理解しておかないと痛い目を見るのもまた、乙だよね

サイトを立ち上げるぞー

実はジャンゴさん、はじめてのサイト的なものを仕込んでおります どこまでも気が利く ありがとう

$ python3 manage.py runserver

これでサーバーが動き出す

Performing system checks...

System check identified no issues (0 silenced).
December 14, 2017 - 23:55:53
Django version 1.8, using settings 'test_project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

すげぇ、ガンダムをたやすく扱うアムロになった気分だ

いや、この速さはもはやシャア・アズナブル.....

立ち上がったサイトをみるには下記のアドレスを適当なブラウザに入力するだけ

http://127.0.0.1:8000/

はい簡単

f:id:motchy83:20171214235713p:plain

しかもめっちゃこれから頑張ってね的なこと言ってる

ジェントルすぎるわ

興奮冷めやらぬ感じですが、今日はここまで