Djangoメモ(36) : 掲示板アプリの最終調整
- 更新日時を保存する
- 同じユーザーの場合は閲覧数を何回もカウントしない
- 各Topicに対するページネーション
- 返信ページで表示する返信数を制限
- 返信投稿後に最後のページへ遷移するようにする
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考に実装してきた掲示板アプリの最終調整をする。
更新日時を保存する
Post(返信)があったときにTopicのlast_updated
が更新されるようにboards/views.py
を修正する。
@login_required def reply_topic(request, pk, topic_pk): topic = get_object_or_404(Topic, board__pk=pk, pk=topic_pk) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = form.save(commit=False) post.topic = topic post.created_by = request.user post.save() topic.last_updated = timezone.now() # <- here topic.save() # <- and here return redirect('topic_posts', pk=pk, topic_pk=topic_pk) else: form = PostForm() return render(request, 'reply_topic.html', {'topic': topic, 'form': form})続きを読む
Djangoメモ(35) : Gravatarを表示する独自テンプレートフィルタを作成
- Gravatar
- 独自テンプレートフィルタ
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にGravatarを表示する独自テンプレートフィルタを作成してみる。
Gravatar
Gravatarとは「グローバルに認識されるアバター」という意味でブログやコメントを投稿する際に名前の側に表示される画像のこと。
下記リンクで登録できる。
Gravatar - グローバルに認識されるアバター (Globally Recognized Avatars)
続きを読むDjangoメモ(34) : humanizeで日時などをわかりやすく表示(naturaltime, intcomma, ordinal...)
- humanize
- 使用可能なフィルタ
- apnumber
- intcomma
- intword
- naturalday
- naturaltime
- ordinal
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にDjango テンプレートフィルタセットのhumanizeを使用してみる。
humanize
humanizeはドキュメントの説明によると"データに「人間くささ(human touch)」を与えるための Django テンプレートフィルタセット"とのこと。例えば日時情報が"5日, 20時間前"のように表示される。
humanizeを使用するためにはmyproject/settings.py
のINSTALLED_APPS
に'django.contrib.humanize'
を追加する。
INSTALLED_APPS = [
...
'django.contrib.humanize',
...
]
続きを読む
Djangoメモ(33) : Markdownエディタを追加する
- Markdownパッケージのインストール
- Markdownエディタを追加
- まとめ
A Complete Beginner's Guide to Djangoのチュートリアルを参考にMarkdownエディタを追加してみる。
Markdownパッケージのインストール
Markdownエディタを追加するにあたり、最初にMarkdownパッケージをインストールする。
Markdownパッケージはpip
でインストールできる。
$ pip install markdown
今回はPipenvで環境を構築しているので下記コマンドを実行。
$ pipenv install markdown続きを読む
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続きを読む