django

django1.5でパスワードリセット

ほとんどdjangoが仕組みを用意してくれてるんだけど、サンプルアプリを作って動かしてみたのでメモ ドキュメントを読まずにやってるので、適当にやってエラー発生→直すの流れになっています まずurls.pyにpassword_resetを定義 from django.contrib.auth.vie…

ClassBasedViewで使えるMixinを集めたdjango-bracesを試す

この間、ClassBasedViewにデコレータを適用する方法を幾つか試してて、例としてlogin_requiredデコレータを使ってたんですが、その流れで、login_requiredをMixinで行うライブラリを見つけたので試してみました。 django-braces Welcome to django-braces’s …

FormWizardの各stepに名前をつける

昨日ちょっと書きましたが、FormWizardは単純にformのリストを渡すと、各stepを識別する名前がu'0'、とかu'1'とかになります。 class OrderWizard(SessionWizardView): form_list = [AuthenticationForm, AddressForm, PaymentForm] def done(self, form_lis…

FormWizardで確認画面を表示する

djangoのFormWizardは各ページにそれぞれフォームをレンダリングして、入力値をセッションやcookieに保存しておいて、最後に全てvalidな状態のデータを揃えて、登録処理なりなんなりを行うというものですが、単純に今までの入力値の表示確認をしたい場合とか…

ClassBasedViewにデコレータを適用する

こんなClassBasedViewがあるとしてviews.py class LoginRequiredSampleView(TemplateView): template_name = 'apps/login_required.html' なんらかのデコレータを使いたい場合、いくつか方法が考えられるのでひとつずつ試してみた。 1つめ。views.pyでlogin_…

djangoのModelFormはどこでchoicesに「-------」を入れているのか追いかけてみた

djangoのModelFormはどこでchoicesに未選択を表す「-------」を入れているのか、ちょっと気になったのでソース追っかけてました。 メモを残しておきます。適当に作ったサンプルmodels.py from django.db import models FAVORITE_COLORS_CHOICES = (('blue', …

RedirectViewでリダイレクト先の指定にnamed urlを使う

views.pyを直していたらテストが全部こんなエラーになってちょっと焦った ImproperlyConfigured: The included urlconf apps.urls doesn't have any patterns in itRedirectViewのurlを取得するのにreverseを使ったのが原因 from django.views.generic impor…

Djangoに偽の管理サイトを用意するdjango-admin-honeypot

django-admin-honeypotを試してみました。 django-admin-honeypot/admin_honeypot at develop · dmpayton/django-admin-honeypot · GitHub ハニーポットとは ハニーポット (英語: Honeypot) は、コンピュータセキュリティ用語としては、不正アクセスを受ける…

Djangoでクリックジャッキング対策

Django 1.5.1でstartprojectすると、クリックジャッキング対策のためのMiddlewareが用意されていることがわかります。 'django.middleware.clickjacking.XFrameOptionsMiddleware'ですね。コメントアウトされてますが。 たぶん1.4以降だと用意されてます。 M…

サーバーサイドのログをブラウザに表示 - DjangoでChrome Loggerを試してみた

サーバーサイドのログをChromeのコンソールに表示するライブラリを見つけたのでDjangoで試してみました。まずchromeのプラグインをinstallします。 chromeの右上のボタンがでますので、使うときはactiveにします。 次にpythonのライブラリをインストール pip…

DjanoのRadioSelectで表示される「--------」を表示させず、かつチェック無しで描画する

djangoのModelFormでChoiceFieldの表示にRadioSelectを使い、フィールドにdefaultを指定していないと、「未選択」のためのradioボタンが表示されます。 コードは以下の通りmodels.py from django.db import models FAVORITE_COLORS_CHOICES = (('blue', 'Blu…

Djangoのフォームでrequired=Trueなフィールドに必須マークをつける

Formの表示をするときに、入力が必須な項目に、「*」をつけたり「必須」って表示したりすることはよくあります。djangoの場合、必須かどうかの定義はformクラス(ModelFormの場合はmodelクラスの場合も)に記述してあるので、テンプレート側で「この項目は必須…

DjangoでOneToOneFieldの存在チェック

djangoのOneToOneFieldは対応するレコードがない状態で参照しようとするとDoesNotExistエラーになります。 class Place(models.Model): name = models.CharField(max_length=50) address = models.CharField(max_length=80) def __unicode__(self): return u…

DjangoのFormPreviewを使って表示した確認ページでchoicesの表示

djangoのmodelでchoicesを持つフィールドはget_FOO_displayでhuman readableな値を返してくれます。Model instance reference | Django documentation | Django こんな感じで使えます。 from django.db import models from django_localflavor_jp.jp_prefect…

DjangoのForm Wizardを使ってみる (CookieWizardView)

昨日SessionWizardViewを使ったForm Wizardをさわってみたんで、そのままCookieWizardViewに置き換えて挙動をみてみる。 SessionWizardViewとCookieWizardViewの違いはこれだけ class SessionWizardView(WizardView): """ A WizardView with pre-configured …

DjangoのForm wizardを使ってみる

djangoでは複数ページにまたがるフォームを処理するためにForm wizardという仕組みが用意されてます。練習のため、できるだけシンプルな使い方をして、動作を確認してみました。 まずFormが必要です。 適当に2つ用意します。forms.py class AddressForm(form…

cleanメソッドでエラーをパラメータにひもづける

djangoのForm、cleanメソッドでValidationErrorをraiseすると、エラーメッセージは__all__キーに保存されるので、テンプレートで表示するときは {{ form.non_field_errors }} で表示します。cleanは複数フィールドの組み合わせ条件をテストするんで、フィー…

djangoで整数3桁のカンマ区切り

以下の手順でokだと思ってたんだけどなぜかカンマ区切りにならず エラーにもならず1. INSTALLED_APPSに'django.contrib.humanize',を追加 INSTALLED_APPS = ( .... 'django.contrib.humanize', ) 2. テンプレートに以下を追加 {% load humanize %}3. 使う {{…

入力エラー時にアップロードファイルをキャッシュに保持するdjango-file-resubmit

フォーム入力エラーのとき、フォームを再描画してエラーメッセージを表示することになりますが、ファイルのアップロードがある場合、その入力値はクリアされますので、もう一度選ぶことになります。django-file-resubmitはファイルをキャッシュにキープして…

FormPreviewを使って確認ページ有りの更新機能を実装する

昨日さわってみたFormPreviewですが、ぱっと見た感じだと更新機能に対応できないように見えたので、いろいろ調べてみました。以下はFormPreviewでフォームを表示する部分の関数です。 def preview_get(self, request): "Displays the form" f = self.form(au…

DjangoのFormPreviewを使って確認ページを表示する

なにかのデータを登録する機能で、登録完了する前に確認ページを表示したい、って要件はよくあります。DjangoではFormPreviewというクラスが用意されているので使ってみます。 まず登録するモデルを作成 from django.db import models from django_localflav…

JPPrefectureSelectで県名を日本語にする

LANGUAGE_CODE='ja'で、USE_I18N=Trueなのに、県名がアルファベットで表示されるのかと思って調べたのでメモ。 translationの仕組みとして、django/conf/locale以下の定義は勝手にみるけど、その他の箇所にlocaleが置いてある場合はLOCALE_PATHSってやつを定…

Djangoのformエラーのinput要素にclassを付与する

djangoで入力エラーのとき、input項目にclass="error"のようにして、デザインを変えたい場合。 フォームで動的にセットするにはどうすればいいか、調べてやってみました。 from django import forms class ContactForm(forms.Form): name = forms.CharField(…

djangoのlocalflavorアドオンがDeprecated

djangoにはlocalflavorアドオンが含まれていて、日本語圏のためには、郵便番号のフォームフィールド(JPPostalCodeField)と、県名を選択できるウィジェット(JPPrefectureSelect)が用意されてます。(知りませんでした) 考えてみると今までdjangoで住所を入力す…

DjangoでDigest認証をかける

django-digestというパッケージを使うとdjangoでdigest認証をかけることができます。 python-digestに依存してるので一緒にinstallします。 pip install django-digest python-digest akoha / django-digest / wiki / Home ― Bitbucket dimagi/python-digest…

Djangoでbasic認証をかける

djangosnippetsにmiddlewareのサンプルがあります Django snippets: Basic Auth Middleware ついでにBasic認証の仕組みをメモしておこうと思います。 Basic認証の流れ 1. クライアントが認証が必要なページをリクエスト2. サーバーはユーザー名とパスワード…

Django 1.5のカスタムユーザーモデルとdjango-registration その3

以下の続きDjango 1.5のカスタムユーザーモデルとdjango-registration - brainstorm Django 1.5のカスタムユーザーモデルとdjango-registration その2 - brainstorm Django 1.5のカスタムユーザーモデルを使っていて、fork版のdjango-registrationでユーザー…

Django 1.5のカスタムユーザーモデルとdjango-registration その2

django 1.5でプロジェクト作って、カスタムユーザーモデルを定義してみる。 apps.models.py from django.contrib.auth.models import AbstractBaseUser from django.db import models from django.utils.translation import ugettext_lazy as _ class MyUser…

Django 1.5のカスタムユーザーモデルとdjango-registration

django 1.5ではUserモデル周りでいくつかの変更がありました。 こちらがわかりやすいです。カスタムユーザーモデルですね。 Django 1.5 の紹介 - Ian Lewis ところでdjangoでユーザー登録というとdjango-registrationがわりと使われているんじゃないかと思い…

Djangoでjsonp

なんかパッケージがあるのかなと思ったけど見当たらず。このくらいは自前で実装するのが普通なのかな?と思ったらdjango-decoratorsというのがgithubに上がってて、いい感じにつかえるデコレータが定義されていた。 julian-amaya/django-decorators · GitHub…