クウネルマナブ

個人的なメモです(笑) 最近は、もっぱら趣味。WEBシステムを作るべくpython,HTML,PHPあたりの勉強を中心にしています!

Django公式 チュートリアル その1

Djangoをマスターしたいので、

チュートリアルにて一連の作業を学びます。

 

関連記事

 

(個人的な学習ノートです)

 

 

 

前回Djangoのインストールから仮想環境の設定を行いました。

apist.hateblo.jp

 

そのままチュートリアルに進みます!

 

「はじめての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のバージョンの確認

$ python -m django --version

 

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, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

 

include( ) → 他の URLconfs への参照を許可

 include() のための正規表現は、$ ( 文字列の終わりに一致する文字 ) よりもむしろトレイリングスラッシュとなる 

Djangoinclude() に遭遇

 ↓

いつも一致した箇所を 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

 

関連記事