djangoでHello Worldしてみた
こんにちは松原です。
こないだ東武動物公園行ってきました。
ペリカンがものすごい絡んできた。駅前の無印が大きかった。
今日はdjangoでHello Worldしてみました。
動的なサイトを作るのに便利そうなフレームワークだなあという所感。
0. 概要
djangoはこんなデータフローでユーザーに返すらしい。
Webブラウザからリクエスト送信
→Webサーバにリクエストが届く
→プロジェクトのurl.pyで、そのリクエストを処理するアプリ(サブプロジェクトみたいなもの)を指定
→アプリのurls.pyで、リクエストを処理する関数またはクラスをviews.pyの中から指定
→views.py内の関数またはクラスがサイトを構築(この際テンプレートhtmlやデータベースのモデルをもってきてうまいこと組み合わせてくれる)
ということで、今回はリクエストをアプリのviews.pyまで通します。
フォルダ構造がややこしいので、最終的にこうなるよというフォルダ構造を先にお見せしときます。これ。
4. urls.pyを変更
プロジェクトのurls.py→アプリのurls.py→views.pyとリクエストが流れるようにする。
4.1 プロジェクトのurls.py
これでhelloというURLを指定されたとき、worldappというアプリ(サブプロジェクトのようなもの)のurls.pyに飛ばしてくれるようになる。
from django.contrib import admin from django.urls import path from django.urls import include urlpatterns = [ path('admin/', admin.site.urls), path('hello/', include("worldapp.urls")) ]
4.2 アプリのurls.py
自分でファイルを作成する。
これでhello/worldを指定されたとき、views.pyのhellofuncからレスポンスオブジェクトを要請するようになる。
from django.urls import path from .views import hellofunc urlpatterns = [ path('world/', hellofunc), ]
5. views.pyでレスポンスオブジェクト作成
ここからレスポンスオブジェクトをもらうと、urls.pyで指定されている関数。
レスポンスオブジェクトをどう作るかでサイトが決まるはず。
本来はデータベースから情報持ってきたりテンプレートのhtml使ったりするが、ここではhelloworldのみ。
ここまでで作りたいものは完成
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def hellofunc(request): return HttpResponse("helloworld")
6. runserverで確認
djangoにお願いするとローカルサーバーを立ててくれて、webブラウザからの様子を見せてくれる。
お願いするコマンドは、プロジェクトのmanage.pyのあるフォルダでこれ。
python manage.py runserver
Webブラウザからローカルホスト(http://127.0.0.1:8000/)を見て、さっきurls.pyで指定したURLをみるとHelloWorldが見られる。うれしい。
htmlとデータベースからの情報を自由に組み合わせられるなら色々作れそうですね。
ログインサイト作るのも簡単で堅牢と噂を聞いてるので、そういうのをひょいっと作るにはよさそう。
最後に、柵ごしに喧嘩するカピバラの画像をおいておきます。それでは。