PATH_INFO を使ってメソッドを指定して実行(改修後)
http://hogehoge.com/dinamic/aaaaa というURLでアクセスした際に、aaaaa() というメソッドを実行させたい!という場合
urls.py
# -*- coding: utf-8 -*- from django.conf.urls.defaults import * urlpatterns = patterns( 'dinamic.views' ,(r'^$', 'index') ,(r'^[a-zA-Z0-9]{1,}', 'index') )
view.py
# -*- coding: utf-8 -*- from django.http import HttpResponse # os.environ を利用して PATH_INFO 取得 import os # funcs.py は views.py と同じディレクトリ内に設置した # 別にどこにおいてあっても構わない import funcs def index(request): func_name = getFuncNameStringsByPathInfo() if hasattr(funcs, func_name): method = getattr(funcs, func_name) result = method() return result else: return HttpResponse('メソッドが無いの', mimetype='text/plain') def getFuncNameStringsByPathInfo(): if os.environ.has_key('PATH_INFO'): if os.environ['PATH_INFO'] != '': path_info = os.environ['PATH_INFO'].split('/') func_name = path_info[2:3] func_name = func_name[0] return func_name return None
funcs.py
# -*- coding: utf-8 -*- from django.http import HttpResponse def aaa(): return HttpResponse("イェアイェア", mimetype='text/plain') def abc(): return HttpResponse("abc", mimetype='text/plain')