Django

webassetsがよさげ

webassetsはWebアプリケーションのJavaScript/CSSの管理ユーティリティライブラリ。もっとわかり易く言うと、複数のJavaScriptファイルをまとめたり、圧縮してくれたり、URLに変更日時のタイムスタンプを付けてくれたりする便利ライブラリ。 PyPI http://pyp…

cacheのKEY_PREFIX, VERSION, KEY_FUNCTION

Django 1.3ではcacheにKEY_PREFIX, VERSION, KEY_FUNCTIONというオプションが追加されていた。 http://docs.djangoproject.com/en/dev/topics/cache/#cache-arguments # settings.py from django.utils.encoding import smart_str def my_make_key(key, key_…

Django 1.3では複数のキャッシュの設定ができる

ふとDjango 1.3 beta1を触ってみたら、今までのCACHE_BACKENDという設定に変わって、CACHESという設定が可能になった。これを使うと複数のキャッシュを指定できる。 # settings.py CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcache…

セッションIDの作り方

メモ。 PHP REMOTE_ADDR, 現在の秒数, 現在のミリ秒, (0, 1)の範囲のランダムなdoubleを結合してランダムな文字列を作る session.hash_functionで指定されたハッシュアルゴリズム(MD5 or SHA-1)でdigestをする session.entropy_lengthが0以上が指定されてい…

Django1.3ではloggingの設定が加わった

Django1.3のalpha版が公開されて、変更点をつらつらと眺めているが、一番気に入っているのはsettings.pyにloggingの設定をかけるようになったところ。 http://docs.djangoproject.com/en/dev/topics/logging/ settings.pyに、 LOGGING = { 'version': 1, 'di…

OpenSocial RESTful APIのテスト用のアプリケーションを書いた

mixiのサーバーに対してOpenSocial RESTful APIのテストをしていたらそのうち逮捕されるのではないかと思い、Djangoでテスト用のアプリケーションを書いた。 http://github.com/csakatoku/freunde 起動方法。 $ git clone git://github.com/csakatoku/freund…

style="display:none"にするとauはフォームの値を送信しない

タイトルのとおりなんだけれども、 <form method="post" action="."> <div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" value="xxxxx" /></div> <input id="id_name" type="text" name="name" value="" maxlength="15" /><br /> <input type="submit" value="Submit" /> </form> のようなHTMLを書くと、auのブラウザはcsrfmiddl…

superfcgiがよさげ

The only one true way to run WSGI apps through fastcgi http://pypi.python.org/pypi/superfcgi/ superfcgiは「WSGIアプリケーションをFastCGIで動かすための唯一正しい方法」という意欲的なライブラリ。superfcgiはfastcgi.comが提供しているfastcgiapp…

Spawningを使ってDjangoを動かす

http://pypi.python.org/pypi/Spawning/ 以下はシングルプロセス・シングルスレッドの場合。プロセス数を増やすには-sオプションを、スレッド数を増やすには-tオプションを指定。 $ cd /paht/to/my_django_project/ $ PYTHONPATH=.. spawn --factory=spawnin…

メールを送るにはdjango-mailerが便利かも

django-mailerは、メール送信をする際にメッセージのキューイングを行うためのDjangoアプリケーション。 http://github.com/jtauber/django-mailer/ Djangoアプリケーションからメールを送る際には通常django.core.mailを使うが、django-mailerの利点として…

mod_passengerでWSGIアプリケーションを動かす

Passenger(mod_passenger)は言わずと知れたRuby on Rails/Rackアプリケーションを動かすための定番サーバーのひとつ。 Phusion Passenger http://www.modrails.com/ 実はPassengerではPython WSGIを動かすこともできる。誰が得するか分からないから誰もほと…

Facebookアプリケーション事始

アプリケーション登録 下記のページを参照。 http://developers.facebook.com/get_started.php Developerアプリケーションにログインする。 アプリケーション名を決め、規約に同意して新規作成 アプリケーションの管理画面からEdit settings > Canvasを選択…

FBMLに触ってみる

FMBLについては、以下のページを参照。 http://wiki.developers.facebook.com/index.php/FBML 詳しくは上のページや、前述した「FBMLとiframeの違い」のページに書いてあるが、とりあえずは、「Facebookのルックアンド&フィール、ユーザーエクスペリエンスに…

Django Hack-a-thon Disc.8に行ってきた

事前にエントリしていなかったのに、気が変わったので当日朝7時に主催者にメールして、ずうずうしく参加してきた。ハンズオンとHackathonのチームに分かれるということなので、Hackathonチームに「DjangoでMixiアプリを作りましょう!」とそれとなく提案して…

アンダースコアを含むアプリケーション名

- myproject -- __init__.py -- settings.py -- apps --- __init__.py --- app_a ---- __init__.py ---- templates ---- templatetags --- app_b --- app_cのような構成のDjangoプロジェクトを作って、settings.pyのINSTALLED_APPSに、 INSTALLED_APPS = ( '…

シングル/ダブルクォートが区別なく使えるようになった

以下の変更で、テンプレートタグでシングルクォート、ダブルクォートが区別なく使えるようになっています。 http://code.djangoproject.com/changeset/10118 以前は、 {% url some_page "a_variable" %} がOKで、 {% url some_page 'a_variable' %} が動かな…

Django1.0.2はMiddlewareの初期化コードがスレッドセーフではない

工エエェ(´Д`)ェエエ工 Thread-safety bug in WSGIHandler (Google GroupのDjango developers) Core handlers are not threadsafe (Trac) django.core.handlers.wsgi.WSGIHandler(mod_pythonでDjangoを動かす以外に使われるHandler)は、スレッドセーフでは…

ログをとる

mod_wsgiで開発を行うようになって困るのは、標準の状態ではsys.stdoutへの書き込みがmod_wsgiによって制限されるので、printデバッグが使えなくなってしまうことです。より正確にいうと、mod_wsgiのWSGIRestrictStdoutディレクティブをOnにすると、printでs…

URLConfにシーケンスを与えることができるようになった

Django1.1からURLConfのinclude関数にシーケンスを与えることができるようになった。 The include() function in Django URLConf modules can now accept sequences of URL patterns (generated by patterns()) in addition to module names. http://docs.dj…

1.1のCacheオブジェクトにはincr, decrメソッドがある

正確にはrev.10031以降。 http://code.djangoproject.com/changeset/10031 % svn log -r 10031 ------------------------------------------------------------------------ r10031 | russellm | 2009-03-11 22:27:03 +0900 (Wed, 11 Mar 2009) | 1 line Fix…

開発サーバにmod_wsgiを利用する

Djangoで開発する時は"manage.py runserver"を使うのが一般的だと思いますが、以下のページで紹介されているスクリプトを利用するとmod_wsgi上で開発を行うことができます。 http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Restarting_Daemon_P…

http_date

今後は、 django.contrib.*が必要ない 特にdjango.contrib.session Djangoのシグナルが必要がない django.templateを使う必要がない django.dbが・・・以下略 に該当するアプリケーションはWerkzuegに置き換えていこうと思う(・・・かな。書いているそばから…

ログイン状態を保持する

Webアプリケーションのログインの際によく「ログイン状態を保持する」(セッションCookieの有効期限をブラウザ終了時までではなく一定期間に指定する)という選択肢を設けることがある。Djangoの標準の認証機構ではそういったことができないなーと思っていて、…

デフォルトのContent-Typeを変更する

DEFAULT_CONTENT_TYPEで変更。Web API等で常にXMLを返すような場合に便利。 # settings.py DEFAULT_CONTENT_TYPE = 'application/xml'

内部エンコーディングをutf8に変更した

プロジェクトがスタートしたときに作った絵文字ライブラリに替えて、Cで書いたコーデックmobilejpcodecsを使うようにし、DjangoのDEFAULT_CHARSETとPythonのdefault encodingをutf8に変更。こんな大きな変更はSQLAlchemy 0.3から0.4への移行以来だ。というわ…

進捗

前回のDjango勉強会のライブ・コーディングしてみせた、「Facebook/アメブロ風のバーチャルギフトショップ」機能をリリースできて一息つけそうである。gifts posted by (C)perezvon

WerkzuegのDebuggerは凄い!

まあ、Pylonsのトレースバックは凄い訳ですが、Pylonsなど、今となってはWerkzeugのセンスの良さの前には霞んでしまう存在かな。werkzeug.DebuggedApplicationを使えば、任意のWSGIアプリケーションにおいて、例外発生時にスタックトレースを調べることがで…

intを含むURL

intと言っても、主に日付に使う整数。Djangoで、 from django.conf.urls.defaults import * pattern = patterns( 'myapp.views', url(r'^entries/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/', 'blog_archive'), ) のようなURLマッピングを書くと、下記のようなURLはすべて同</day></month></year>…

神社参拝(2) 空白の扱い

http://jinja.pocoo.org/2/documentation/templates#whitespace-control Djangoのテンプレートだと、 {% for item in seq %} {{ item }} {% endfor %} のようなテンプレートを書いたときに、出力結果は、例えばseqにrange(3)を与えたとすると、 0 1 2のよう…

mod_wsgiとlighttpd+FastCGIの速度比較

mod_wsgiとlighttpd+FastCGIでのDjangoアプリケーションの速度比較を行う。環境はCentOS 5.2/Python2.5.3、Apacheが2.2.3とmod_wsgi2.3、lighttpdは1.4.20。 テストに用いたDjangoアプリケーション $ django-admin.py startproject benchで新規にプロジェク…