デコレーション
修飾子「@」を使用するデコレーション記述。テストした環境は Python2.5.2 っていうか app-engine-patch(google app engine)。
- urls.py
urlpatterns = auth_patterns + patterns('', (r'^wkwk/showChar', 'wkwk.views.showChar'), (r'^wkwk/showPost', 'wkwk.views.showPost'), ) + urlpatterns
テスト用アプリケーション「wkwk」ワクワク
- wkwk/views.py
# -*- coding: utf-8 -*- from django.http import HttpResponse def Deco(f): def main_deco(request): if f.func_name == 'showChar' : return f(request, 'b') else : return f(request) return main_deco @Deco def showChar(request, char): if char == 'a' : text = 'char is a' elif char == 'b' : text = 'char is b' else : text = 'char is other' return HttpResponse(text, mimetype='text/plain') @Deco def showPost(request): if request.POST.has_key('char') : text = 'POST[char] is ' + request.POST['char'] else : text = 'POST[char] is None' return HttpResponse(text, mimetype='text/plain')
で、テスト
# http://localhost:8000/wkwk/showChar へアクセスすると以下が出力された # char is b # http://localhost:8000/wkwk/showPost へアクセスすると以下が出力された # POST[char] is None
ありがちな、各機能の前処理(認証等)や後処理(出力フォーマット)などが楽になるーと思った。
参考にしたところ