Djangoメモ(16) : フォームAPIを使わずにフォームを作成
- フォームを表示するページ作成
- フォーム作成
- ビューの処理
- Topic一覧表示
- Topic作成ボタン追加
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にフォームを作成してみる。
フォームを表示するページ作成
DjangoではフォームAPIを使ってフォームを作成するが、理解を深めるためにまずはフォームAPIを使わずにフォームを作成してみる。そして、その後でフォームAPIを使ってフォームを作成する。
今回作成するフォームは新しいTopic(Board内のスレッド)とPost(Topicに対する返信だが、Topic作成時のメッセージも含む)を作成するフォームで完成形は下図。実際は誰がTopicとPostを作成したかを管理するがユーザ認証等については後で考える。
続きを読む
Djangoメモ(15) : runserver_plusで対話型シェルを使ったデバッグ
- Django Extensions, Werkzeugのインストール
- runserver_plusの使い方
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考に掲示板アプリを作成中。
Django Extensions, Werkzeugのインストール
アプリを作成中だがデバッグしやすいようにDjango Extensionsに含まれるrunserver_plus
を使ってみる。
Django ExtensionsはDjangoの拡張機能を集めたパッケージでpipでインストールできる。
runserver_plus
を使用するにはWerkzeug
(ドイツ語で工具、道具という意味)というWSGI Webアプリケーションライブラリが必要なので併せてインストールする。
$ pip install django-extensions Werkzeug続きを読む
Djangoメモ(14) : Django Debug Toolbarでデバッグ情報を表示
- Django Debug Toolbar
- インストール
- 各パネルの表示内容
- パネル設定
- debugsqlshellコマンド
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考に掲示板アプリを作成中。
Django Debug Toolbar
アプリを作成中だがデバッグしやすいように色々なデバッグ情報を表示できるDjango Debug Toolbarを使ってみる。
続きを読むDjangoメモ(13) : extendsとblockでテンプレートの継承
- 親テンプレート作成と継承
- ナビゲーションバー追加
- 参考:フォント変更
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にテンプレートを継承してみる。
親テンプレート作成と継承
テンプレートに共通部分がある場合は共通部分を親テンプレートとして定義し、子テンプレートに個別の処理を記述するのがメンテンナンスしやすい。
最初に親テンプレートとなるtemplates/base.html
を下記内容で新規作成する。
{% load static %}<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{% block title %}Django Boards{% endblock %}</title> <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}"> </head> <body> <div class="container"> <ol class="breadcrumb my-4"> {% block breadcrumb %} {% endblock %} </ol> {% block content %} {% endblock %} </div> </body> </html>
{% block %}
, {% endblock %}
は領域を確保するタグで、子テンプレートでこのblock内のHTMLを置き換えることができる。
{% block title %}Django Boards{% endblock %}
のようにデフォルト値を指定することもでき、子テンプレートで何も設定されない場合はこのデフォルト値が使用される。
Djangoメモ(12) : get_object_or_404ショートカットとリンクのテスト
- get_object_or_404ショートカット
- ナビゲーションリンクの追加とテスト
- メインページの変更
- 詳細ページの変更
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にget_object_or_404ショートカットの利用とリンクのテストをしてみる。
get_object_or_404ショートカット
前回作成したTopic一覧を表示する詳細ページのテストをするためにmyproject/boards/tests.py
にBoardTopicsTests
を追加。
from django.urls import reverse, resolve from django.test import TestCase from .views import home, board_topics from .models import Board class HomeTests(TestCase): # 省略 class BoardTopicsTests(TestCase): def setUp(self): Board.objects.create(name='Django', description='Django board.') def test_board_topics_view_success_status_code(self): url = reverse('board_topics', kwargs={'pk': 1}) response = self.client.get(url) self.assertEquals(response.status_code, 200) def test_board_topics_view_not_found_status_code(self): url = reverse('board_topics', kwargs={'pk': 99}) response = self.client.get(url) self.assertEquals(response.status_code, 404) def test_board_topics_url_resolves_board_topics_view(self): view = resolve('/boards/1/') self.assertEquals(view.func, board_topics)続きを読む