LoginSignup
1
1

More than 3 years have passed since last update.

Djangoを使って将棋棋譜管理アプリを作る4 ~Viewの作成~

Last updated at Posted at 2020-03-04

はじめに

Djangoを使って将棋の棋譜管理アプリを作っていくなかでの備忘録、第4回です。

作業環境

今回の作業環境は以下の通りです

  • Windows 10 Pro
  • Anaconda
    • version1.7.2
    • python 3.7
      • django 2.2.5
  • git
    • version 2.25.0.windows.1
  • mysql
    • ver 8.0.15 for Win64 on x86_64

また、Djangoのディレクトリ構造は次のようになります。

- kifu_app_project/
    - kifu_app_project/
        - __init__.py
        - setting.py
        - urls.py
        - wsgi.py
    - kifu_app/
        - migrations/
        - __init__.py
        - admin.py
        - apps.py
        - models.py
        - tests.py
        - views.py
    - manage.py
    - .gitignore

本稿の内容

  • URLの設定
  • Viewの設定
  • Templateの作成

URLの設定

まずはURLを設定していきます。
「このURLに来たら、このメソッドを行って!」ということを決めておくことです。
このように、指定されたURLに対して、どのようなページを表示するかを決定する機能を、"URLディスパッチャ"と言います。

更に、このURLディスパッチャの動作は、"URLConf"と呼ばれる設定ファイルに書くことが決まています。
Djangoでは、urls.pyがURLConfに相当します。

以下が参考資料です。

【Django入門】urls.py(URLConf)の役割と使い方

大まかなURLの設定

まず、Djangoのプロジェクト全体に対して、kifu_appアプリケーションでのURLの設定を読み込むようにします
内側のkifu_app_project内にあるurls.pyを以下のように編集します。

kifu_app_project/urls.py
"""kifu_app_project URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include       # includeを追加

urlpatterns = [
    path('kifu_app/', include('kifu_app.urls')),      # 追加
    path('admin/', admin.site.urls),
]

これで、kifu_app内のURL設定が読み込まれるようになりました!

細かなURLの設定

次に、kifu_appアプリケーション内での、細かいURLの指定を行います。

kifu_app内に、urls.pyを作成してください。

このurls.pyでやることは、
1. views.pyの全てのメソッドをimport
2. アプリケーション名を指定
3. URLを記述
です。

kifu_app/urls.py
from django.urls import path

from . import views     # 1.

app_name = 'kifu_app'      # 2.

urlpatterns = [
    path('', views.index, name='index'),    # 3.
]

path関数の第一引数にURL、第二引数に呼び出すメソッドを記述します。
第三引数(name属性)はナシでもかまいませんが、指定しておくと後で楽になります。

先程kifu_app_project内のurls.pyで、kifu_appアプリケーションのURLを'kifu_app/'としました。
このため、例えばindex.htmlが表示されるURLはlocalhost:8000/kifu_app/となることに注意してください。

Viewの設定

次に、Template(画面)を表示する際に、サーバー側で実行するメソッドを作成します。
これにより、動的にデータを表示できるようになります。

views.pyの編集

先程、urls.pyでindexメソッドを呼び出すと書いたので、実際にindexメソッドを作成します。
ここでは、試しに今日の日付を取得して、Templateに渡しましょう。

views.py
from django.shortcuts import render

# Create your views here.

import datetime

def index(request):
    today = datetime.date.today()
    return render(request, 'index.html', {'today': today})

renderメソッドをreturnすることで、Viewが表示されます。
引数には、
- 変数request、
- templateファイル名
- 渡したい変数を辞書型
で渡します。

Templateの作成

最後に、実際の画面(Template)を作成していきます。

index.htmlの作成

Viewで、index.htmlにデータを渡すと書いたので、index.htmlを作成します。
書き方はHTMLを書く場合とほとんど同じです。

index.html
<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>Kifu APP</title>
    </head>
    <body>
        <h3>{{ today }}</h3>
    </body>
</html>

Viewから渡された変数を使用したい場合は{{}}の中に辞書のkeyを書きます。

これでサーバーを立ち上げて、アクセスしてみましょう!
今日の日付が出ればOKです!

次回予告

DBのデータをTemplateに渡す

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1