Yura YuLife

ITエンジニアの覚え書き

django

Djangoでユーザがグループに所属しているかを判定する

Djangoで、特定のグループに所属しているユーザのみにリンクやページを表示する場合に、以下のような方法があります。 テンプレートタグを用いる方法 テンプレートタグを用いると、ユーザの所属するグループによってページ内の情報やリンクを出しわけること…

Django 1.8にAxesを追加する

連続ログイン失敗時にアカウントをロックする機能を追加できるプラグインdjango-axesのインストール手順です。 環境 Django 1.8 django-axes のインストール $ pip install django-axes settings.pyの編集 vi settings.py INSTALLED_APPS = ( # 以下の1行を…

djangoのペジネータで、現在のページの前後数ページのみをリンクとして表示する

Djangoのペジネータを使ってリンクを表示するときに、Google検索みたいに前後数ページのリンクを表示する方法です。 Googleの場合は前5ページ、後4ページを表示していますね。 環境 Django 1.8 ペジネータで前後数ページを表示 views.py from django.core.pa…

Djangoの初回マイグレーション時に relation "auth_user" does not exist というエラーが発生する場合

環境 Ubuntu 14.04 PostgreSQL 9.3 Django 1.8 初回マイグレーション時のエラー Djangoのプロジェクトをコピーしてきて、$ python manage.py migrate しようとすると、以下のようなエラーが発生した。 Synchronizing apps without migrations: Creating tabl…

AtomでDjangoのテンプレート編集時にEmmetを有効化

AtomのEmmetは、デフォルトでHTML, CSS, Sass/SCSS, LESSの編集時のみ、タブキーで補完ができる設定になっています。 そのため、django-templatesのように、HTML以外のシンタックスでEmmetを利用する場合には別途設定が必要です。 インストール済みパッケー…

Djangoの環境構築(Ubuntu Server, Apache, PostgreSQL)

以下の環境でDjangoを動作させるまでの手順をまとめました。 Ubuntu Server 14.04 LTS 64bit Apache 2.4.7 PostgreSQL 9.3 Django 1.8 (Python 2.7) Django 1.7, PostgreSQL 9.Xでも同様の手順で構築が可能です。 パッケージのインストール Python $ sudo ap…

Djangoでフォーム内でクリックされたボタンによって異なる処理を行う

タイトルの通り、同一フォーム内でクリックしたボタンによって異なる処理を行いたい場合は以下のように書きます。 hoge.html <form action="{% url 'hoge.views.some_view' %}" method="post"> {% csrf_token %} <input type="text" name="hoge" value=""> ... <input type="submit" name="button_1" value="ボタン1"> <input type="submit" name="button_2" value="ボタン2"> </form> v…

Djangoで特定のページのみBasic認証をかける

やり方は、以下のページの通りです。 djangosnippets: view by view basic authentication decorator スニペットの保存 まず、上記サイトのスニペットをコピー&ペーストして、プロジェクト内に保存します。 basic_auth_view.py import base64 from django.h…

DjangoのQuerySetでランダムに要素を取得

例えば、SomeModelというモデルクラスのインスタンスを10個取得する場合。 random_query_set = SomeModel.objects.order_by('?')[:10] QuerySet API reference | Django documentation | Django ただし、リファレンスによるとバックエンドで利用しているDBに…

Django 1.7ではmimetypeではなくcontent_typeを利用する

DjangoでJSON形式のレスポンスを返すビューを作っていたのですが、Djangoを1.6から1.7にアップグレードした際にエラーが発生しました。 views.py import json from django.http import HttpResponse def some_view(request): some_dict = {'hoge': 'hogehoge…