はじめに
今流行りのPython…
AI開発・ディープラーニングするにもPython、画像処理といえばPython、ログ解析もPython、Webアプリケーション作るにもDjangoでPython……
ふとこんな声が聞こえたような気がしました
「Pythonみんなやってる、やってないのお前だけ」
しゃあない、、Pythonやったりますわ。
Djangoの公式ドキュメントを読み解いていきたいと思います。
https://docs.djangoproject.com/ja/3.0/
対象とする読者レベル
僕は現在B2です。情報系の学部でもないです。
普段はElixir/PhoenixでWebアプリケーション開発をしてます。
(PhoenixはElixirのWebフレームワークです)
Pythonに関しては授業で軽く触ったことあるよくらいです。
なのでレベルとしては、
他のWebフレームワークなら使ったことあるけど、DjangoはもちろんPythonもまともに触ったことはないっすわー
くらいの人向けの記事になると思います。
また、インストールなどはなぜか自分のPCにされてあったので(ほんとになぜ)、ここでの紹介は飛ばします。
ちなみに以下のコマンドでバージョンが帰って来ればDjangoのインストールまでできています。
$ python -m django --version
はじめての Django アプリ作成、その1
https://docs.djangoproject.com/ja/3.0/intro/tutorial01/
プロジェクト作成
$ django-admin startproject mysite
これで作成されるのは以下です
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
上から行きます
mysite/
・rootディレクトリであるmysiteディレクトリに関しては特に意味を持たない、いつでも適当に名前変更して大丈夫。
manage.py
・コマンドラインユーティリティ。サーバーの立ち上げなどプロジェクトに関する操作を行う。
mysite
・アプリ名
__init__.py
・PythonパッケージであることをPythonに知らせる空のファイル
settings.py
・プロジェクトの設定ファイル
urls.py
・URLを書く(Railsとかで言うルーター?)
asgi.py
wsgi.py
よくわからん
サーバー立ち上げ
$ python manage.py runserver
http://127.0.0.1:8000/にアクセスして
これが出たら成功です。
また、
$ python manage.py runserver 8080
でポート変更して起動
$ python manage.py runserver 0:8000
でサーバーのipも指定できます。
Polls アプリケーションをつくる
以下のコマンドで作成します。
また、アプリケーション作成はファイルのどこで行っても良いそうです。
$ python manage.py startapp polls
作成されたアプリケーションの中身は以下のようになります。
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
はじめてのビュー作成
polls/views.py を編集します。
fromdjango.httpimportHttpResponsedefindex(request):returnHttpResponse("Hello, world. You're at the polls index.")
urlを対応づける必要があるとのことです。urls.pyを作成します。
fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path('',views.index,name='index'),]
その後mysite/url.pyの方に反映させます。
fromdjango.contribimportadminfromdjango.urlsimportinclude,pathurlpatterns=[path('polls/',include('polls.urls')),#add
path('admin/',admin.site.urls),]
この一連の流れは少しだけRailsなどのルーティングと異なりますね。
ここまでの設定でhttp://localhost:8000/polls/にアクセスすると
こうなっていれば成功です!
(番外編)pathについて
pathは以下のように引数をとります
path(route, view, kwargs=None, name=None)
route
"polls/"などpathのパターン
view
パターンが一致すると呼ばれるview
kwargs
任意のキーワード引数を辞書として対象のビューに渡す。
name
URLに名前をつけてプロジェクト内のどこからでもその名前で呼び出せるようにする。