今回もDjangoについて、使いながら気付いたことを書き留めていく。
⇒ 前回までの内容
1.ディレクトリ構造を確認
メインディレクトリを含めた現在のディレクトリ構造を見てみる。
前回触ったファイルの位置関係だけを確認しておく。
urls.py: メインディレクトリ、追加したアプリのどちらにも存在
settings.py: メインディレクトリにだけ存在
views.py: 追加したアプリにだけ存在
myprojectのディレクトリ
myproject/
│
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
├── wsgi.py
myapp/
├──
└── migrate/
│ └── __init__.py
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── views.py
2.settings.pyの設定を変更する
よくわからないが、とりあえずここは変更しても問題なさそうなところだけを変更してみる。
LANGUAGE_CODE = 'ja' # en-us ⇒ ja
TIME_ZONE = 'Asia/Tokyo' # UTC ⇒ Asia/Tokyo
3.HTMLテンプレートを作成する
Djangoでは、HTMLファイルをテンプレートとして使います。まず、テンプレートを保存するディレクトリを作成し、そこにボタンを表示するHTMLを配置します。
3.1: templates フォルダ、myapp フォルダ、index.htmlを作成する
myappディレクトリ
myapp/
│
├── templates/
│ └── myapp/
│ └── index.html # HTMLファイル
└── migrate/
│ └── __init__.py
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
├── views.py
3.2: index.htmlの内容を作成
試しにボタンを一つ作ってみる。
templates/myapp/index.html に次のコードを記述します。これは、ボタンを表示し、クリックすると /clicked/ というURLに遷移します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ボタンの例</title>
</head>
<body>
<h1>ようこそ</h1>
<form action="/clicked/" method="get">
<button type="submit">ここをクリック</button>
</form>
</body>
</html>
3.3: ビューを作成
myapp/views.py に、ボタンがクリックされた後に表示されるビュー (clicked_view) を追加します。
from django.http import HttpResponse
from django.shortcuts import render
# 「ようこそ」とボタンを表示するビュー
def welcome_view(request):
return render(request, 'myapp/index.html')
# ボタンがクリックされたときに表示されるビュー
def clicked_view(request):
return HttpResponse("ボタンがクリックされました!")
3.4: ルーティング設定
次に、urls.py ファイルを編集して、ビューを呼び出せるようにURLを設定します。
from django.contrib import admin
from django.urls import path
from myapp.views import welcome_view, clicked_view # viewsをインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('', welcome_view), # ルートURLで「ようこそ」を表示
path('clicked/', clicked_view), # ボタンがクリックされたときのURL
]
4.開発用サーバーを起動
4.1: 開発用サーバーを起動し、http://127.0.0.1:8000/にアクセスする。
「ようこそ」と「ここをクリック」というボタンが表示される。
python manage.py runserver
ボタンをクリックし、「ボタンがクリックされました!」と表示されたらOK!
とりあえず、なんとなく使い方のイメージは掴めてきたような気がする。