如何在django中创建类似controller / action / id的url模式?

时间:2010-09-16 21:55:12

标签: python django django-urls

我正在尝试创建一个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'函数中得到了一个关键的错误异常。我在这里朝着正确的方向前进吗?

1 个答案:

答案 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_callableautodiscover方法执行此操作的一些示例。