Django

管理画面で使われているページング表示を通常のページで使う

Djangoの管理画面の一覧表示でページング(ページネーション)表示がありますが、あれを通常のページで使う方法です。 django.contrib.admin.views.main.ChangeListオブジェクトを管理画面で使っているのですが、これのモックを作って使ってみました。 Django…

フォームセットで初期データの数を変えるついでにAdminDateWidgetを使う

Djangoのフォームセットの使い方はよく忘れるので。 フォームセット (formsets) — Django v1.0 documentation ドキュメントにフォームセットの項目はあるのでこのとおりでよい。 これだけだと面白くないので、AdminDateWidgetでも使ってみる。 Djangoのバー…

Python Hack-a-thon 2010.07用の資料

Python Hack-a-thon 2010.07 : ATND Djangoのハンズオンやります。 tokibito / python-hackathon4-django — Bitbucket 追記 そして誰もこなかった。Django不人気!

Djangoとディレクトリトラバーサル

社内で話題になったのでまとめる。Djangoとディレクトリトラバーサルについて。検証したバージョンは1.2.1。 ユーザの入力値などを利用してファイルパスなどを生成したりする場合やファイルをアップロードさせる場合には特に注意する。 Djangoのテンプレート…

bpmappersを公開しました

モデルから辞書への変換を支援するPythonモジュールを公開しました。 bpmappers 0.8.2 : Python Package Index tokibito / python-bpmappers — Bitbucket ビープラウドで使っているものです。 JSONのAPIを作るときなどに、ツリー構造の辞書オブジェクトから…

zipファイルを作成して返す

Djangoでzipファイルを作成してレスポンスで返す方法。 PythonのZipFileクラスはファイルライクなオブジェクトに書き込みできるので、HttpResponseのインスタンスをそのまま渡せます。 views.py from zipfile import ZipFile from django.http import HttpRe…

django-autofixtureが便利

フィクスチャのメンテナンスが大変で、何かないかなって探してて見つけた。 django-autofixture 0.12.1 : Python Package Index Djangoのモデルのメタ情報からフィクスチャデータを適当に作ってくれたりする。 Railsだとfactory_girlみたいなもの。 こんな感…

Django1.2

Django1.2がリリースされましたね。 http://docs.djangoproject.com/en/1.2/releases/1.2/ 自分が気になる変更点は以下の通り。 マルチDB対応 CSRF対策の変更 メール送信バックエンド テンプレートのキャッシュ ModelAdminのreadonly設定 まだ全然試してない…

djangohosting(not cloud)

去年の4/1に書いたエントリでは、Django Cloudがどうのとか書いてたけど、実際はただのDjangoのホスティングサーバなんだよね。 自分のホームページ( http://tokibito.orz.hm/ )は1年ぐらい前からこの自前のアプリケーションサーバを使って動かしてる。 $ dj…

DjangoでXMLを出力してDelphiから利用する

サーバサイド(Python/Django)とクライアントサイド(Delphi)のアプリケーションの連携をやってみる。 今回はゲストブックアプリのデータを、クライアントアプリから閲覧、投稿できるようにしてみる。 サーバサイドの用意 Djangoのアプリケーションは以前作成…

CSVファイルダウンロードをちょっとだけ汎用に

結構前に作ったCSVファイルを管理画面からダウンロードするアプリを汎用にした。 CSVファイルをダウンロードする例は、djangosnippetsにも結構載ってるのでそちらも参考に。 tokibito / django-csvutils — Bitbucket 例えばModelAdminでactionを使えるように…

WSGIとDjangoのメモ

wsgiref.handlers.CGIHandlerっぽいものを自分で書いてDjangoのIt worked!を表示してみるメモ。 tests.py # coding:utf-8 from django.conf.urls.defaults import * urlpatterns = patterns('') def start_response(status, response_headers, exc_info=None…

urlconf周りのメモ

カスタム用。urlconfをクラスにしたいときとか。普通は使わない方が良い。 # -*- coding: utf-8 -*- from django.core import urlresolvers from django.utils.functional import memoize from django.utils.importlib import import_module from django.con…

フォームのフィールドの並び順を変える

Djangoで定義済みのフォームのフィールドの順番を変える方法。 通常は定義したときの順番だけど、後から無理矢理変えたいとかなら、base_fieldsがSortedDictなので、keyOrderを変えれば良い。 >>> from django import forms >>> class MyForm(forms.Form): .…

URLの名前の衝突を解決する

Djangoではurls.pyなどで、名前付きのURL(url関数を使ってnameを指定)することで、URLを名前から逆引きすることができますが、この名前が衝突するとどうなるでしょう。 答え:一番最後に定義されたものが使われます。 以下、その例。 プロジェクトの構造 mypr…

Djangoを使い始めた人向けの読み物

同僚の @AE35 が翻訳していたので。 Django 開発初心者に送る 10 の Tips (超訳?) - SPEAKER BREAKA これは良い内容。読むべき。

Djangoのモデルに定義されたフィールドを列挙する

Djangoのモデルに定義されたいろいろな情報を列挙するには、 _meta を使うことでできます。 >>> from django.contrib.auth.models import User >>> for f in User._meta.fields: ... print f ... <django.db.models.fields.AutoField object at 0x01400290> <django.db.models.fields.CharField object at 0x013FBA50> </django.db.models.fields.charfield></django.db.models.fields.autofield>

django.core.urlresolvers.resolveの使い方

直接使うことなんてほとんどない、resolve関数の使い方。 URLからビュー関数を得る。 >>> from django.core.urlresolvers import resolve >>> from django.http import HttpRequest >>> func, args, kwargs = resolve('/') >>> response = func(HttpRequest(…

TestCaseを拡張しよう

Djangoでのテストを書くときに、URLにアクセスしてステータスコード見るだけってテストをコピペで量産するのはかっこ悪いので、どうにかする例。 test.pyにTestCaseをちょっと拡張したクラスを書いておく test.py from django.test import TestCase class Ba…

Python Hack-a-thon #2

Python Hack-a-thon #2でDjangoのハンズオン担当してました。 初心者向け、ということなのでいつも通りguestbookアプリのインストールと解説をしました。 人数が6,7人で比較的余裕があったので、Apache2+modwsgiの設定とnginx+fastcgiでの設定についても実…

クラスベースのビュー

社内チャットで出た質問。GETパラメータによって呼び出すビューを変えたい場合はどう書くとよいか。 クラスベースのビューを書くと割ときれいに書けるんじゃないかな、という話。 まずは素直に書いてみる。 def index(request): action = request.GET.get('a…

XMLを出力するview

XMLを出力するviewの例。xml.sax.saxutils.XMLGeneratorをちょっとだけ拡張したSimplerXMLGeneratorを使うと楽。 from django.http import HttpResponse from django.conf import settings from django.utils.xmlutils import SimplerXMLGenerator def xml_v…

GETかPOSTを許可しないview

DjangoでGET/POSTの片方を遮断するようなviewはデコレータでどうぞ。 from django.http import HttpResponse from django.views.decorators.http import require_GET, require_POST @require_GET def get_only(request): return HttpResponse(u'get only') @…

django-bpmobileドキュメント

ドキュメント書きました。 http://docs.nullpobug.com/bpmobile/trunk/ リポジトリはbitbucketに。 tokibito / bpmobile-doc — Bitbucket

django-debug-toolbar便利

何か社内で盛り上がってたので書く。 django-debug-toolbar便利。 http://robhudson.github.com/django-debug-toolbar/ こんな感じのことができる。 実行されたSQLの表示 loggingの内容 使用されたテンプレートの名前、コンテキスト HTTPヘッダ リクエスト変…

django-pagination便利だね

イアンに教えてもらったのも結構前なのだけど、使う場面があったのでようやく使ってみた。 djangoには最初からpaginatorがあるけど、実際に使うと結構面倒くさい。 django-paginationを使うとミドルウェアとテンプレートタグをちょっと書くだけでページネー…

Django1.1でModelAdminにページを追加する

Django1.1ではadminアプリが大幅に改善され、拡張が1.0に比べて容易になりました。 ModelAdminにページを追加する場合は、ビューをメソッドとして追加しておき、get_urlsでurlpatternsにURLを追加します。 guestbookアプリのadmin.py # coding:utf8 from dja…

Django 1.1がリリースされました

Django 1.1がリリースされています。 Django 1.1 released | Weblog | Django モデル周りの機能追加が結構ありますね。 django-adminは1.0に比べてかなりすっきりして、機能も増えて拡張しやすくなりました。

bpmobileで簡易Twitterクライアントを作ってみた

bpmobileのデモ用に簡易Twitterクライアントを作ってみた。 FriendsTimelineしかとってきてない。 tokibito / nullpobug-mobile-twitter-client — Bitbucket 手元のW53K(au)で動作確認った。 追記 DoCoMo端末でも動作確認った。

ReviewBoardの管理画面

ReviewBoardの管理画面はかなりカスタマイズされてるよ。 Djangoの管理画面のカスタマイズの参考になるかもね。 djangohostingで動かしてみてる。