Django公式 チュートリアル その1
Djangoをマスターしたいので、
チュートリアルにて一連の作業を学びます。
関連記事
- Django 仮想環境からインストールまで
- Django 公式チュートリアル
- Django公式 チュートリアル その1
- Django公式 チュートリアル その2
- Django公式 チュートリアル その3
- Django公式 チュートリアル その4
- Django公式 チュートリアル その5
- Django公式 チュートリアル その6
(個人的な学習ノートです)
前回Djangoのインストールから仮想環境の設定を行いました。
そのままチュートリアルに進みます!
「はじめてのDjangoアプリ作成 その1」
学習環境
macOS Sierra 10.12
python3.6
Django1.11
テキストエディッタ:ATOM
参考サイト
はじめての Django アプリ作成、その 1 | Django documentation | Django
上記サイトに沿って進めます。
やってみっぺ
作業フォルダは前回記事にて設定したフォルダです。
確認方法は 、
$ pwd
と入れると、現在のフォルダの位置が表示されます。
(oresite) ◯◯◯$ pwd
/Users/◯◯◯/django/DjangoTest
頭にカッコの表示が、仮想環境で作業している状態になります。
「簡単な投票 (poll) アプリケーション」の作成らしい
Poll アプリケーションは 2 つの部分:
-
ユーザが投票したり結果を表示したりできる公開用サイト
-
投票項目の追加、変更、削除を行うための管理 (admin) サイト
からできている。
Djangonのバージョンの確認
1.11
OKぼくじょ〜
「チュートリアルは Django 1.11 と Python 3.4 以降を対象」
→クリア
プロジェクトの作成だべよ
初めてDjangoを使う際には、セットアップを行う必要があるみてぇ〜よ。
通常は、Djangoのプロジェクトを構成するコードを自動生成。
<プロジェクト>
データベースの設定や Django 固有のオプション、アプリケーション固有の設定などといった、個々の Django インスタンスの設定を集めたもの
$ django-admin startproject mysite
を実行すると、フォルダ内に以下のフォルダ&ファイルが生成。
DjangoTest
│
├── mysite
│ ├── manage.py
│ └── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── oresite
├── bin
├── include
├── lib
├── pip-selfcheck.json
└── pyvenv.cfg
外側の mysite/ ルートディレクトリ
このプロジェクトのただの入れ物
この名前は Django に関係しませんので、好きな名前に変更可
manage.py
Django プロジェクトに対する様々な操作を行うためのコマンドラインユーティリティ
内側の mysite/ ディレクトリ
このプロジェクトの本当の Python パッケージです。この名前が Python パッケージの名前であり、 import の際に 使用する名前
mysite/__init__.py
An empty file that tells Python that this directory should be considered a Python package. If you’re a Python beginner, read more about packages in the official Python docs.
英語かいw
<直訳>
空のファイル。
このディレクトリはPythonパッケージと見なす必要があります。
Python初心者の方は、公式のPythonドキュメントでパッケージの詳細を読んでください。
そんな感じ。
感じ取れれば多分、OK。
mysite/settings.py
Django プロジェクトの設定ファイル
mysite/urls.py
Django プロジェクトの URL 宣言、 Django における「目次」に相当
mysite/wsgi.py
プロジェクトをサーブするためのWSGI互換Webサーバーとのエントリーポイント
(イマイチよくわかってません)
開発用サーバー
サーバ?サーバー??
伸ばす???伸ばさない???
チュートリアルではとりあえずテスト用サーバを動かしてみようって感じみたいです。
なのでw
$ cd mysite
$ 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 'python manage.py migrate' to apply them.
May 27, 2017 - 13:03:43
Django version 1.9, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
こんな感じになりましたw
フォルダ移動後にサーバを動かして見ます。
とりあえず、終わりにしたいときは、
「CONTROL + C」押せよ!
ってことはわかりましたw
この状態で、http://127.0.0.1:8000/ へアクセスし、
It worked!
Congratulations on your first Django-powered page.
と表示されていれば、正常。
開発サーバーは必要に応じて自動的にリロードするらしい。
しかしながら、ファイルの追加のようないくつかの行動は再起動をしません、
このような場合はサーバーを再起動する必要があります。
とりあえず正常に表示されたら、サーバを止めて大丈夫な感じですので、
「control + c」 を押す。
これからが本番だ!
どこかで多分、はまりますw
これはつきものなので。。。
急がば回れググレ! です。
Pollsアプリケーションを作る
アプリケーションを作るには、 manage.py と同じディレクトリ(mysite)に入って、このコマンドを実行
$ python manage.py startapp polls
pollsの中身が以下のように。
mysite
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __pycache__
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── polls
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
はじめてのビューの作成してみっぺ
とりあえずpolls/views.py を開いて、以下の Python コードを加える
(mysite/polls/views.py)
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
Django上で最も単純なビュー
なんだかよくはわからないが、
「Hello, world. You're at the polls index.」
と表示されるんでしょうね。
ビューができたので、これを呼び出すためのURLを紐つけてやります。
(URLconf を作る作業)
mysite/polls/urls.py の作成
(mysite/polls/urls.py)
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), ]
次はルートのURLconfに polls.urls モジュールの記述を反映させる。 mysite/urls.py に django.conf.urls.include のimportを追加して、 urlpatterns のリストに include() を挿入
(mysite/urls.py)
from django.conf.urls import include, urlfrom django.contrib import admin urlpatterns = [ url(r'^polls/', include('polls.urls')), url(r'^admin/', admin.site.urls), ]
■include( ) → 他の URLconfs への参照を許可
include()
のための正規表現は、$
( 文字列の終わりに一致する文字 ) よりもむしろトレイリングスラッシュとなる
↓
いつも一致した箇所を URL から切り落とし、
次の処理のために残りの文字列を include された URLconf へ渡す。
(include()
の背景にある考え)
URL のプラグ & プレイを簡単に作ること。
polls には独自の URLconf (polls/urls.py
) を持っているので、
“/polls/” 、 “/fun_polls/” や、 “/content/polls/” といった、
どんなパスルート下にも置けて、どこに置いてもきちんと動作するようにするため。
設定が正しいかどうか、サーバを起動して確認
$ python manage.py runserver
http://localhost:8000/polls/ へアクセスした時に、
『Hello, world. You're at the polls index.』と表示されていたので成功。
ここまではなんとかクリア・・・
そろそろ一つまずきありそうな予感・・・。
url() 引数:view
Django がマッチする正規表現を見つけると、 Django は指定されたビュー関数を呼び出します。
その際は HttpRequest オブジェクトを第一引数に、そして正規表現で「キャプチャされた」値をその他の引数にして関数を呼び出します。正規表現が単純にキャプチャをしている場合は位置引数として、名前付きでキャプチャしている場合はキーワード引数として呼び出します。この例はこの後すぐ出てきます。
url() 引数: kwargs¶
任意のキーワード引数を辞書として対象のビューに渡せます。
url()
引数: name¶
URL に名前付けをしておけば Django のどこからでも明確に参照でき、とくにテンプレートの中で有効です。この便利な機能のおかげで、プロジェクトのURLにグローバルな変更を加える場合にも1つのファイルを変更するだけで済むようになります。
なんとかクリア
記事が増えなかったら、ハマってるかもしれませんw