django
DjangoのAdmin管理画面でForeignKeyを使用したモデルを編集する場合、 プルダウンを生成して参照先のオブジェクトを簡単に選択できるようにしてくれる。 しかし、プルダウン生成時に全てのオブジェクトを取得してきてしまうので、 参照先のデータが増えてき…
ページ上で3日以内に更新された記事に「New!」と表示したりする場合に使えるフィルタを作ってみた。 datetime型と、yyyy-mm-dd形式の文字列の両方に対応。 がんばったらもっと色々なフォーマットに対応できるだろうけど、がんばれなかった。 使う時はエラー…
djangoのカスタムタグやカスタムフィルタを利用する場合はloadタグでファイル名(モジュール名)を 指定してロードする。 これまたアプリ名は必要なく、モジュール名だけで呼び出せるのだけど、 そのままだと名前がかぶる可能性があるのでアプリを指定して呼び…
djangoでデータベースのデータをインポートする時は fixtureデータを用意してloaddataコマンドでインポートする。 loaddataコマンドはアプリの指定無しでfixture名を指定するだけでインポートしてくれるのだけど、 そのままだと名前がかぶる可能性があるので…
crop機能を初めて使ったけど、縦か横どちらかに長い画像をサムネイル化する時は、cropした方が見栄えがいいですね。 相変わらず整理されてないソースだけど、メモメモ。 ライブラリは、Python Imaging Library と、 http://www.pythonware.com/products/pil/…
Webフォームから送信されたデータを保存後にメールでユーザーやら担当者やらに送信する処理が必要な事が多い。 メール送信処理は結構重いので、リクエスト中に送信するのではなく、後でバッチ処理で送信する処理を作ってみた。 送信するメールを保存するモデ…
djangoでユーザーがログイン済かどうかをチェックする場合は通常 @login_required デコレータを使用するけど、 IDとパスワード以外の要素でログインチェックしたり、未ログインのユーザーを独自のログイン画面に遷移させる 場合は、カスタマイズしたデコレー…
from django.db import models class UserAlertManager(models.Manager): def additional_method(self): "追加するメソッド" ... class UserAlert(models.Model): user = models.ForeignKey(User) ... objects = UserAlertManager() これで、下記のように追…
画像を外部URLから取得する際に画像フォーマットが分からない場合、下記の方法で取得できた。 Python Imaging LibraryとDjangoを使った方法。 import urllib from PIL import Image from django.core.files.base import ContentFile image_url = "画像ファイ…
新しい開発環境を構築するにあたり、またApacheとmod_pythonで構築するのもアレだな、ということで流行のnginxを試してみた。 だいたいの情報は、 nginxホーム http://nginx.net/ NginxJa http://wiki.nginx.org/NginxJa nginx 一人 nginx 勉強会 第一回 ngi…
フォーム入力後の確認画面で入力内容を表示する場合、 form.フィールド名.data で入力値を取得できるようなんだけど、choicefieldやmodelchoicefieldを表示した場合は dataにpk値が入っているようで、これを入力画面と同じラベル名で表示したい。 簡単に実現…
Djangoのformsに含まれるChoiceFieldやMultipleChoiceFieldだと、 choicesが必須なので、あらかじめ用意されたデータしか入力できない。 既存のデータではなく、タグやasinなどの文字列をWeb画面上で複数入力なり選択なりし、 それを文字列のリストとして処…
IPアドレスを増やさずにドメインベースで複数のドメインを運用しつつSSLを使えないかと 調べたところ、Apacheだけでは無理だけどリバースプロキシを使えば何とかなりそうだったので、やってみた。 元々 Apache + mod_python + SSL でDjangoアプリを運用して…
django1.0から、FileFieldとImageFieldのupload_to属性に関数を指定できるようになり、 ファイルのアップロード先を動的に設定できるようになったようだ。 http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField 関数の第一…
admin管理サイトを使いたくなかったので、FlatPageを更新するスクリプトを作成した。 settings.pyでFlatPageを使用する設定をしておく。 http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/#ref-contrib-flatpages テンプレートは下記のような感…
メールで送信した画像とテキストデータをdjangoに登録するために、 メールサーバからデータベースに保存したメールデータを Pythonのemailライブラリとdjango APIを使ってテキストデータと 画像ファイルとして保存するスクリプトを作成した。 色々省いたので…
django-registration http://code.google.com/p/django-registration/ django-registrationはユーザー登録や認証関連の処理を一通り行ってくれる便利なdjangoアプリケーションである。 設置方法等については、下記のページに分かりやすい説明が記載されてい…
久々にdjangoを最新版にアップデートしたら下記の問題が発生した。 ページを開く時にadmin関連のエラーが出るようになった。 models.pyに定義したverdjnlibのPhotoFieldが動作しなくなった。 ページを開く時にadmin関連のエラーが出るようになった url.pyでa…
前回発見したjQuery Form Pluginを使って実際にファイルをアップロードするサンプルを作った。 http://d.hatena.ne.jp/piro_suke/20080615/1213498024 ファイルをアップロードする場合のみ、iframeが使用される関係でサーバ側から 返却するデータをtextarea…
djangoのページング機能の使い方が変わったようなので、 それに合わせてページリンクを表示する機能を作った。 また使いそうなので保管。 以前のバージョンで使用していた、BetterPaginatorを参考にした。 http://d.hatena.ne.jp/piro_suke/20070827/1188202…
Using Django in command-line scripts http://surftrackr.net/blog/view/35/using-django-command-line-scripts/ コマンドラインで実行するようなPythonスクリプトでdjangoのライブラリを利用する方法。 この方法を使えば、アップロードしたXMLファイルを解…
djangoのモデルでTextFieldクラス型にしたフィールドにunique=True設定を行うと、 「lengthが指定されていない」というエラーが発生した。 試しにlengthやらmax_lengthやらのオプションをつけてみたが、今度は 「そのような属性はありません」というエラーが…
djangoは複合キーが使えないらしいので、代わりの機能を探したら 開発版で追加されたunique_togetherというMetaオプションを使えば 良いらしいことが分かった。 例えばあるモデルでユーザーとブックマークの組み合わせを一意にする場合は こんな感じかな? m…
認証APIを使ってユーザー認証を行えるようにしたい。 はてな認証API http://auth.hatena.ne.jp/ livedoor Auth http://auth.livedoor.com/ はてなとライブドアに認証APIがあるようで、両方同じような使い方ができるらしい。 はてなユーザーなのではてな認証…
今後も使いそうなので作っておく。 環境はflex2とs2flex2とdjango開発版。 簡単な入力チェック機能付き。 flex側はTitleWindowなので別途それを表示するための機能を追加する必要あり。 flex側表示用mxml(UserEntryWindow.mxml)
備忘メモ。django側のモデルクラスが他のクラス型の変数を内部に持っている時の受け取り方。 知っていれば簡単なことのようで、django側のモデルクラスで定義された変数名ではなく、 DBのテーブルが持つ外部キー名が入る。変数名_idというint型。 django側モ…
備忘メモ。Windowsでの開発時に使える。 python manage.py reset [app名] python manage.py loaddata [fixture名]
マニュアルを読めば書いてあるけど、覚書き。 http://michilu.com/django/doc-ja/templates_python/ 以前作成した(というかコピーした)、数値を3桁区切りにする関数を djangoテンプレート上でフィルタとして利用できるようにする。 testproject/utils.py .…
djangoのマニュアルでは探しきれなかったけど、ページングライブラリがあるようだ。 django.core.paginator.ObjectPaginator でも少し機能が少ないようだったので探してみると、Django snippetsにいくつか登録されていた。 使いやすそうなBetterPaginatorと…
周知の事実なのかもしれないが、 ユーザ入力が格納されたフォームオブジェクトをsaveする前に システム側でデータを追加したい場合、フォームオブジェクトの値を 直接変更することができなかったので、フォームオブジェクトに格納された 入力データをモデル…