2013-04-01から1ヶ月間の記事一覧
あるview関数のテストをしていてMultiValueDictKeyErrorというものに遭遇したのでメモこれで再現します。 # views.py from django.views.generic import View from braces.views import CsrfExemptMixin class NotificationView(CsrfExemptMixin, View): htt…
テストのためにsettings.pyの値を変えたい場合ってありますね。 テスト起動時に--settingsオプションでテスト用の別ファイルを指定する方法もありますが、他にも方法が用意されています。 Testing Django applications | Django documentation | Django view…
オブジェクトの情報を表示するページでそのまま、インラインでデータの更新が可能になるdjango-inplaceeditなるものを試してみました。django-inplaceedit 0.94 : Python Package Index インストール pip install django-inplaceedit いろいろ設定します set…
クレジットカードの番号はLuhnアルゴリズムというチェックサム方式が使われていることを知りました。 Luhnアルゴリズムは、様々な識別番号の認証に使われている単純なチェックサム方式。MOD-10アルゴリズムとも。クレジットカード番号、IMEI番号、National P…
ほとんどdjangoが仕組みを用意してくれてるんだけど、サンプルアプリを作って動かしてみたのでメモ ドキュメントを読まずにやってるので、適当にやってエラー発生→直すの流れになっています まずurls.pyにpassword_resetを定義 from django.contrib.auth.vie…
この間、ClassBasedViewにデコレータを適用する方法を幾つか試してて、例としてlogin_requiredデコレータを使ってたんですが、その流れで、login_requiredをMixinで行うライブラリを見つけたので試してみました。 django-braces Welcome to django-braces’s …
昨日ちょっと書きましたが、FormWizardは単純にformのリストを渡すと、各stepを識別する名前がu'0'、とかu'1'とかになります。 class OrderWizard(SessionWizardView): form_list = [AuthenticationForm, AddressForm, PaymentForm] def done(self, form_lis…
djangoのFormWizardは各ページにそれぞれフォームをレンダリングして、入力値をセッションやcookieに保存しておいて、最後に全てvalidな状態のデータを揃えて、登録処理なりなんなりを行うというものですが、単純に今までの入力値の表示確認をしたい場合とか…
こんなClassBasedViewがあるとしてviews.py class LoginRequiredSampleView(TemplateView): template_name = 'apps/login_required.html' なんらかのデコレータを使いたい場合、いくつか方法が考えられるのでひとつずつ試してみた。 1つめ。views.pyでlogin_…
djangoのModelFormはどこでchoicesに未選択を表す「-------」を入れているのか、ちょっと気になったのでソース追っかけてました。 メモを残しておきます。適当に作ったサンプルmodels.py from django.db import models FAVORITE_COLORS_CHOICES = (('blue', …
views.pyを直していたらテストが全部こんなエラーになってちょっと焦った ImproperlyConfigured: The included urlconf apps.urls doesn't have any patterns in itRedirectViewのurlを取得するのにreverseを使ったのが原因 from django.views.generic impor…
django-admin-honeypotを試してみました。 django-admin-honeypot/admin_honeypot at develop · dmpayton/django-admin-honeypot · GitHub ハニーポットとは ハニーポット (英語: Honeypot) は、コンピュータセキュリティ用語としては、不正アクセスを受ける…
Django 1.5.1でstartprojectすると、クリックジャッキング対策のためのMiddlewareが用意されていることがわかります。 'django.middleware.clickjacking.XFrameOptionsMiddleware'ですね。コメントアウトされてますが。 たぶん1.4以降だと用意されてます。 M…
if hasattr(obj, '__iter__'): for e in obj: pass In Python, how do I determine if an object is iterable? - Stack Overflow
サーバーサイドのログをChromeのコンソールに表示するライブラリを見つけたのでDjangoで試してみました。まずchromeのプラグインをinstallします。 chromeの右上のボタンがでますので、使うときはactiveにします。 次にpythonのライブラリをインストール pip…
railsの2.3.8が必要になったのでインストールした。最近rubyを全然さわってないので忘れてしまっていたけど、-vでバージョン指定するんでした。 gem install rails -v 2.3.8 rdocとかriとかインストールされて遅い。--no-rdoc --no-riをつければ入らないんだ…
djangoのModelFormでChoiceFieldの表示にRadioSelectを使い、フィールドにdefaultを指定していないと、「未選択」のためのradioボタンが表示されます。 コードは以下の通りmodels.py from django.db import models FAVORITE_COLORS_CHOICES = (('blue', 'Blu…
Formの表示をするときに、入力が必須な項目に、「*」をつけたり「必須」って表示したりすることはよくあります。djangoの場合、必須かどうかの定義はformクラス(ModelFormの場合はmodelクラスの場合も)に記述してあるので、テンプレート側で「この項目は必須…
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のmodelでchoicesを持つフィールドはget_FOO_displayでhuman readableな値を返してくれます。Model instance reference | Django documentation | Django こんな感じで使えます。 from django.db import models from django_localflavor_jp.jp_prefect…
昨日SessionWizardViewを使ったForm Wizardをさわってみたんで、そのままCookieWizardViewに置き換えて挙動をみてみる。 SessionWizardViewとCookieWizardViewの違いはこれだけ class SessionWizardView(WizardView): """ A WizardView with pre-configured …
djangoでは複数ページにまたがるフォームを処理するためにForm wizardという仕組みが用意されてます。練習のため、できるだけシンプルな使い方をして、動作を確認してみました。 まずFormが必要です。 適当に2つ用意します。forms.py class AddressForm(form…
メソッドをオーバーライドするとき、親クラス側の処理を実行させるのにsuperを書きますが def some_method(): super(SampeClass, self).some_method() こういうのはいちいち書くの面倒くさい。 pycharmならきっといい機能があるはずだと思って確認してみると…
djangoのForm、cleanメソッドでValidationErrorをraiseすると、エラーメッセージは__all__キーに保存されるので、テンプレートで表示するときは {{ form.non_field_errors }} で表示します。cleanは複数フィールドの組み合わせ条件をテストするんで、フィー…
普通formのinput要素でEnter押すとsubmitしますが、なんらかの理由でsubmitさせたくない場合 $(function () { $("form input").keypress(function (e) { return !(e.which == 13) }); }); こんなんでいいのかな参考 : javascript - Prevent form submission …
適当な自分用のwebアプリ書いてて、まあ普通にjqueryでイベント貼り付けたりなんだりしてたんですが $(function(){ $('a.some_class').click(function(e){ alert('hoge'); }); }); こういうのだとxhrで動的に読み込んだ要素に対しては実行されないので、そう…
pycharmでdjangoプロジェクト開いてると「Django Console」って機能が使えまして まあ、manage.py shellなんですが ⌘eで履歴を辿れるということを知りました。おもむろにキー入力するとインクリメンタルサーチします。 便利
以下の手順でokだと思ってたんだけどなぜかカンマ区切りにならず エラーにもならず1. INSTALLED_APPSに'django.contrib.humanize',を追加 INSTALLED_APPS = ( .... 'django.contrib.humanize', ) 2. テンプレートに以下を追加 {% load humanize %}3. 使う {{…
フォームのサブミットボタンをダブルクリックすると、リクエストが何度も飛んでしまうことがあるので、なんとかしてくれって要件がたまにあります。 普通のinput type="submit"だったらdisableにしたりするんじゃないかと思います $("input[type=submit]").c…
フォーム入力エラーのとき、フォームを再描画してエラーメッセージを表示することになりますが、ファイルのアップロードがある場合、その入力値はクリアされますので、もう一度選ぶことになります。django-file-resubmitはファイルをキャッシュにキープして…