【发布时间】:2013-07-17 20:42:11
【问题描述】:
是否可以在 Django 中编写一个 URL 路由,其中视图名称将是动态的(从 URL 解析)?
"http://www.example.com/<view>/" => executes app.views.<view>
【问题讨论】:
标签: python django django-urls
是否可以在 Django 中编写一个 URL 路由,其中视图名称将是动态的(从 URL 解析)?
"http://www.example.com/<view>/" => executes app.views.<view>
【问题讨论】:
标签: python django django-urls
您可以编写一个停靠在http://www.example.com/ 的视图,并将视图名称作为参数,然后在视图函数中从字典name -> custom view 触发适当的处理程序,或者扫描globals()(丑陋,你最终会检查输入是否有任何恶意数据,因为它是直接从用户那里获取的,globals() 返回所有可见全局变量的字典)。
【讨论】:
您可以使用中间/帮助视图。
urls.py:
url(r'^/(?P<view_name>\w+)/$', help_view),
views.py:
def help_view(request, view_name):
return globals()[view_name]()
或者,您可以使用带有view_name->view_function 映射的字典,而不是从globals() 调用函数。
希望对您有所帮助。
【讨论】: