2010-09-16 1 views
2

Я пытаюсь создать шаблон url, который будет вести себя как контроллер/action/id route в рельсах. До сих пор здесь то, что у меня есть:Как создать шаблон url, например controller/action/id в django?

from django.conf.urls.defaults import * 
import views 

urlpatterns = ('', 
       (r'^(?P<app>\w+)/(?P<view>\w+)/$', views.select_view), 
      ) 

Вот мой 'views.py':

def select_view(request, app, view): 
    return globals()['%s.%s', % (app, view,)]() 

До сих пор это не сработало. Я получаю исключение ключевой ошибки в функции «globals». Я иду в правильном направлении здесь?

ответ

1

Попробуйте что-то вроде этого:

from django.utils.importlib import import_module 

def select_view(request, app, view): 
    mod = import_module('%s.views' % app) 
    return getattr(mod, view)(request) 

Это очевидно упрощенный пример, что вы делаете импорт views.py из вашего приложения и посмотреть, если он имеет view функцию, и если он делает выполнение этой функции дает запросу в качестве первый аргумент.

См. Некоторые примеры того, как Django делает это с помощью методов get_callable и autodiscover.