Djangoメモ(32) : UpdateViewでユーザーアカウント情報を編集
- UpdateViewでユーザーアカウント情報を編集
- fieldsの変更
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にユーザーアカウント情報を編集してみる。
UpdateViewでユーザーアカウント情報を編集
前回まででクラスベース汎用ビューのUpdateView, ListViewを使用してみたが、UpdateViewを使用してユーザーアカウント情報の編集機能を作成してみる。
accounts/views.py
を以下のように編集。
from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.urls import reverse_lazy from django.utils.decorators import method_decorator from django.views.generic import UpdateView @method_decorator(login_required, name='dispatch') class UserUpdateView(UpdateView): model = User fields = ('first_name', 'last_name', 'email') template_name = 'my_account.html' success_url = reverse_lazy('my_account') def get_object(self): return self.request.user続きを読む
Djangoメモ(31) : クラスベース汎用ビューのListViewで一覧表示とページネーション
- ListViewで一覧ページ作成
- 対話型シェルでページネーションの確認
- 関数ベースビューでのページネーション
- クラスベース汎用ビューのListViewでのページネーション
- ページネーションのテンプレートを再利用
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にクラスベース汎用ビューのListViewを使用してみる。
ListViewで一覧ページ作成
前回はUpdateViewを使用して編集機能を作成したが、今回はListViewを使用して一覧ページを作成する。
これまでは関数ベースビューを使用して以下のように書いていた。
myproject/urls.py
path('', views.home, name='home'),
boards/views.py
from django.shortcuts import render from .models import Board def home(request): boards = Board.objects.all() return render(request, 'home.html', {'boards': boards})続きを読む
Djangoメモ(30) : クラスベース汎用ビューのUpdateViewで編集機能作成
- ビューの種類
- 関数ベースビュー
- クラスベースビュー
- クラスベース汎用ビュー
- UpdateViewを使って編集機能を作成
- UpdateViewのテスト
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にクラスベースビューを使用してみる。
ビューの種類
これまでのチュートリアルでは関数ベースビューを使用してきたが、ビューにはその他にクラスベースのビューがある。
以降、それぞれについて説明する。
- 関数ベースビュー(Function-based views)
- クラスベースビュー(Class-based views)
- クラスベース汎用ビュー(Class-based generic views)
Djangoメモ(29) : migrateでモデルに閲覧数カウント用のフィールドを追加
- モデルにフィールド追加
- migrateコマンド実行
- ビュー、テンプレートの変更
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にモデルに閲覧数カウント用のフィールドを追加してみる。
モデルにフィールド追加
migrate
コマンドを使ってTopicモデルに閲覧数カウント用のviewsフィールドを追加してみる。
作業を進める前に適用していないマイグレーションがないか確認しておく。No migrations to apply
となればよい。
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, boards, contenttypes, sessions Running migrations: No migrations to apply.続きを読む
Djangoメモ(28) : QuerySet API(count, annotate)で個数のカウント
- 対話型シェルで確認
- モデル、テンプレートの実装
- annotate()
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にQuerySet APIを使ってみる。
対話型シェルで確認
チュートリアルに沿って掲示板アプリを作成しているが、今回はQuerySet APIを使用してPost、Topicの個数、最後のPostに関する情報を表示してみる。
最初に、オブジェクトをわかりやすく表示するためにboards/models.py
の各モデルに__str__
を定義しておく。
Truncator
は文字列を切り詰めることができるクラス。
from django.db import models from django.utils.text import Truncator class Board(models.Model): # ... def __str__(self): return self.name class Topic(models.Model): # ... def __str__(self): return self.subject class Post(models.Model): # ... def __str__(self): truncated_message = Truncator(self.message) return truncated_message.chars(30)続きを読む