2010-06-24 4 views
1

, 내 url.py 모듈은 다음과 같이 보입니다 내 견해로는? 이런 식으로 뭔가가 좋은 것 :장고 url.py 내 장고 프로젝트에서

urlpatterns = patterns('', 
    (r'^$', 'web.views.home.index'), 
    (r'^home/(?<method_name>.*)', 'web.views.home.(?P=method_name)'), 
) 

UPDATE

을 지금은이 작업을 수행하는 적어도 하나의 방법을 알고, 이런 종류의 추천? 아니면 명시 적으로 각 개별 메소드에 대한 매핑을 생성해야 할 충분한 이유가 있습니까? 당신은 디스패처 방법으로 클래스 기반 뷰를 사용할 수

import web.views.home as views_list 
urlpatterns = patterns('', 
    (r'^$', 'web.views.home.index'), 
    *[(r'^home/%s' % i, 'web.views.home.%s' % i) for i in dir(views_list)] 
) 

답변

2

는 그런 일이 될 수 있습니다

class MyView(object): 
    def __call__(self, method_name): 
     if hasattr(self, method_name): 
      return getattr(self, method_name)() 


    def index(self): 
     ...etc... 

하고 urls.py는 다음과 같이 보일 것이다 :

from web.views import MyView 
urlpatterns = patterns('', 
    (r'^$', 'web.views.home.index'), 
    (r'^home/(?<method_name>.*)', MyView()), 
) 
+0

니스! 나는 보안을 유지하기 위해 사용자 정의 데코레이터 (@ public 또는 @web_method 또는 뭔가)를 확인해야 할 것입니다. – MikeWyatt

+0

'dir (amodule)'에는'__file__','__name__' 등 특수한 이름 (앞뒤에 이중 밑줄이 붙습니다)이 포함될 것입니다 - 반드시 _those _! -를 피하고 싶습니다. 간단한 데코레이터는 흥미로운 뷰 목록을 명시 적으로 빌드 할 수 있습니다 (권장). –

3

: