我正在尝试创建一个 url 模式,其行为类似于 rails 中的 Controller /操作/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' 函数中得到一个关键错误异常。我的方向是否正确?
最佳答案
尝试这样的事情:
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
方法。
关于python - 如何在 Django 中创建类似 controller/action/id 的 url 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731132/