我正在尝试创建一个url模式,其行为类似于rails中的controller / action / id路由。到目前为止,我所拥有的是:
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'函数中得到了一个关键的错误异常。我在这里朝着正确的方向前进吗?
答案 0 :(得分: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
方法执行此操作的一些示例。