Djangoに触る(その1)
PythonのフレームワークのDjangoの使い方を勉強します. 過去にちょろっと触った程度なので,再勉強するつもりでやります
ほぼ日記です.
解説要素はあまりありません…. チュートリアルをなぞって,自分が疑問に思ったところを追記する感じでやっていきます.
Djangoとは
PythonでうごくWebフレームワークの1つです. webアプリ開発で使える機能がまとまっているので, これを利用することで,Webアプリを作成する際の効率を上げることができます.(現代においては当たり前に使われているかもしれません)
Pythonで動くWebフレームワークは他にもあり,
Bottle
やFlask
,Pyramid
, Plone
などが存在しています.
今回はPython界で最も使われているフレームワークであるDjangoに挑んでみようというわけです.
また今回の学習ではDjangoの公式ドキュメントを参考に進めていきたいと思います.
Django ドキュメント | Django ドキュメント | Django
今日やったところ
はじめての Django アプリ作成、その 1 | Django ドキュメント | Django
Djangoのインストール
pipを使うことでインストールは完了します.
$ pip3 install django
重ねてバージョン確認もしてみます.現在(2017/08/30)での最新バージョンは1.1
です
$ python3 $ import django $ print(django.get_version())
プロジェクトを作成する
Djangoのコードはプロジェクトという単位で管理されます, プロジェクトには実際のコードや設定などが詰まっており,djangoにはそれをまるっと生成するコマンドがあります.
プロジェクトを生成したい場所で,次のコマンドを入力します.**********
の部分には生成したいプロジェクト名を入れます.
$ django-admin startproject **********
今回の例ではdjango-admin startproject mysite
としました.
生成するとこんな感じのディレクトリとコードが生成されます.
ファイルのそれぞれの役割は割愛します(私自身まだわかりきってないのと,公式ドキュメント(https://docs.djangoproject.com/ja/1.11/intro/tutorial01/)に丁寧に買いてあるので…)
サーバーを動かしてみる
作成したプロジェクトが動くかのテストをします. 作成したディレクトリに入って,次のコマンドを実行します.
$ python manage.py runserver
するとコマンドラインに次のような表示がなされます.
この状態で,http://127.0.0.1:8000/にアクセスして見ます. このような画面が出れば,OKです.
シンプルなビューを作る
サーバがかけたので,今度はビューを作ります. いわゆるwebページの見た目を制御する部分です.
そのために色々ファイルを準備するのですが, djangoにはそれらのファイルやディレクトリを自動生成する機能が含まれています.すごい,
なのでその機能を使って,polls
という名前のアプリケーションを作り,そこにビューとしての機能をもたせたいと思います.
今回はmysite
の中のmanage.py
と同じディレクトリで作業をします(こうすることでmysite
のサブモジュールではなく,トップレベルのモジュールとしてインポートできます).
$ python manage.py startapp polls
すると新たにこんな感じにファイルが追加されます.
ここにpolls/urls.py
を追加し,
polls/vies.py
,polls/urls.py
,mysite/urls.py
に対して,チュートリアルのサイト(https://docs.djangoproject.com/ja/1.11/intro/tutorial01/)で言われるような追記を行います.
ここで行われているのは,URLの対応付けと,実際のビューに関する記述です.
ここまで記述が完了したら,改めてサーバーを動かします.
$ python manage.py runserver
今回アクセスするのは,http://127.0.0.1:8000/polls/です. 次の画面が出れば,正しく機能しています. もしエラーのようなものを吐いていれば,当該ファイルを修正します.
おわりに
ひとまず今日はここまでです. Djangoおもしろいです,知らないことも多いですが勉強して期待です. チュートリアルを動かしてるだけなので新規性も何もありませんが,やっていく中での疑問とかを調べて一緒にまとめていければいいなと思ってます.
明日はこの続きができればいいなーと考えていますが時間が取れるかわからないのと, 私自身の資料執筆が遅いので,今日と同じくらい短めになると思います.
それでも,短くても小出しで更新したいと思ってます…….
頑張ります.