Django

1/2ページ

Django フィールドルックアップの使い方

Django Querysetのfilter(), exclude(), get()メソットでは、フィールドルックアップを使って条件の指定などができます。 使用方法 filter(), exclude(), get()メソット内で、「カラム名__ルックアップフィールド名」の形式で使用することができます。 これを使って様々な条件でモデルの絞り込みを行うことができます。 また、複数のルックアップフィー […]

Djangoの組み込みタグでif文を簡潔に書く

Djangoの組み込みタグを活用することで冗長になりがちなif文を簡潔に書くことができます。 firstof False でない最初の変数の値を出力する場合に 以下のように書き換えることができます。 その他応用 for … empty for文で登録内容があるかないかの判定は for … emptyで簡潔に書き換えることができます。 yesno 変数がTrueとFalse(None)のときで切り […]

Django QuerySet APIでTimeFieldの合計を求める

TimeFieldとSum Django QuerySet APIでTimeFieldの合計を普通にSumを使って求めようとすると… 01:00:00, 00:30:00, 00:40:00の合計が17000とおかしな値で帰ってきてしまいます。 TIME_TO_SEC関数 どうもこれは、MySQLのバグらしいのですが、TIME_TO_SEC関数を噛ましてあげると回避できるようです。 なので、Dja […]

DjangoでCache Bustingの設定する

静的なファイル群(画像、CSS、JSなど)は、キャッシュ対策(Cache Busting)を行わないとブラウザ側でキャッシュされたファイルが上手く更新されず不具合のもととなってしまいます。 なので、今回は、Djangoで行うことができる二通りのキャッシュ対策を紹介致します。 方法1. ファイル名にハッシュを付加する Djangoには、デフォルトでbase.e352ca3230fc.cssのように […]

Djangoで現在アクセスされているページのURLを取得する

Djangoで現在アクセスされているページのURLを取得する方法です。 view.py ドメインのみ ドメイン+プロトコル パラメータなしパス パラメータありパス パラメータなしURL パラメータありURL Template テンプレート中でアクセスしているURLを表示するためにsetting.pyのTEMPLATESに次の設定を追加します。 ドメイン パラメータなしパス パラメータありパス パラ […]

Djangoでページをキャッシュ化して爆速で表示するための設定

Djangoでページをキャッシュ化し、爆速でサイトを表示する方法です。 ページごとキャッシュするので、ブログやポータルサイトなどの静的なコンテンツ向きの設定になります。 1. settings.pyの設定 settings.pyに下記のコードを追加します。 settings.py CACHES = { 'default': { 'BACKEND': 'django.core.cache.backe […]

Djangoのセキュリティ対策設定

Djangoの管理コマンドには、プロジェクト構成の検証用コマンドcheckが用意されています。 このコマンドを実行すると、アプリケーション起動時にエラーとなる記述を、アプリケーションを実行せずに確認できますが、 --deployオプションを使うと、本番環境向けのセキュリティ関連の設定をチェックができます。 python manage.py check --deploy 表示される警告は、次のソース […]

django-import-exportの使い方

DjangoのモデルをCSVしてインポート・エクスポートできるライブラリ「django-import-export」の紹介です。 インストール pipを用いてdjango-import-exportをインストールします。 $ pip install django-import-export setting.py setting.pyにimport_exportを追加します。 INSTALLED_A […]

Djangoのモデルにcreated_at,updated_atを実装する

Djangoのモデルによくある作成日(created_at),更新日(updated_at)を追加する方法です。 基本的にモデルに各項目を設定するだけで実装できます。 各項目の追加、更新も自動で行ってくれるので、脳死でとりあえず追加しておくのもありだと思います。 設定方法 models.pyのモデルに2行追加するだけです。 polls/models.py class Model(models.Mo […]