もた日記

くだらないことを真面目にやる

Djangoメモ(35) : Gravatarを表示する独自テンプレートフィルタを作成

  • Gravatar
  • 独自テンプレートフィルタ
  • まとめ

Python 3.6.4 Django 2.0.2

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
  • まとめ

Python 3.6.4 Django 2.0.2

A Complete Beginner's Guide to Djangoのチュートリアルを参考にDjango テンプレートフィルタセットのhumanizeを使用してみる。


humanize

humanizeはドキュメントの説明によると"データに「人間くささ(human touch)」を与えるための Django テンプレートフィルタセット"とのこと。例えば日時情報が"5日, 20時間前"のように表示される。
humanizeを使用するためにはmyproject/settings.pyINSTALLED_APPS'django.contrib.humanize'を追加する。

INSTALLED_APPS = [
    ...
    'django.contrib.humanize',
    ...
]
続きを読む

Djangoメモ(33) : Markdownエディタを追加する

  • Markdownパッケージのインストール
  • Markdownエディタを追加
  • まとめ

Python 3.6.4 Django 2.0.2

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の変更
  • まとめ

Python 3.6.4 Django 2.0.2

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でのページネーション
  • ページネーションのテンプレートを再利用
  • まとめ

Python 3.6.4 Django 2.0.2

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})
続きを読む