Как мне создать шаблон URL, такой как контроллер / действие / идентификатор в Django? - PullRequest
2 голосов
/ 17 сентября 2010

Я пытаюсь создать шаблон URL, который будет вести себя как маршрут контроллера / действия / идентификатора в рельсах.Пока вот что у меня есть:

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 Ответ

1 голос
/ 17 сентября 2010

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

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 методами.

...