もた日記

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

Djangoメモ : python-decouple, django-environで設定情報を管理

  • python-decouple
    • インストール
    • 使い方
  • django-environ
    • インストール
    • 使い方
  • まとめ

Python 3.6.4 Django 2.0.2

A Complete Beginner's Guide to Djangoのチュートリアルを参考にプロジェクトの設定情報を管理してみる。


python-decouple

Djangoのsettings.pyに書いてある設定情報にはSECRET_KEYやパスワード、環境に依存する設定などが含まれているのでハードコードするのは望ましくない。
この問題を解決するためにチュートリアルではpython-decoupleを紹介している。

github.com

続きを読む

Djangoメモ(36) : 掲示板アプリの最終調整

  • 更新日時を保存する
  • 同じユーザーの場合は閲覧数を何回もカウントしない
  • 各Topicに対するページネーション
  • 返信ページで表示する返信数を制限
  • 返信投稿後に最後のページへ遷移するようにする
  • まとめ

Python 3.6.4 Django 2.0.2

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
  • 独自テンプレートフィルタ
  • まとめ

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