【问题标题】:Routing - parameter as view name路由 - 参数作为视图名称
【发布时间】:2013-07-17 20:42:11
【问题描述】:

是否可以在 Django 中编写一个 URL 路由,其中​​视图名称将是动态的(从 URL 解析)?

"http://www.example.com/<view>/"  => executes app.views.<view> 

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

    您可以编写一个停靠在http://www.example.com/ 的视图,并将视图名称作为参数,然后在视图函数中从字典name -> custom view 触发适当的处理程序,或者扫描globals()(丑陋,你最终会检查输入是否有任何恶意数据,因为它是直接从用户那里获取的,globals() 返回所有可见全局变量的字典)。

    【讨论】:

      【解决方案2】:

      您可以使用中间/帮助视图。

      urls.py:

      url(r'^/(?P<view_name>\w+)/$', help_view),
      

      views.py:

      def help_view(request, view_name):
          return globals()[view_name]()
      

      或者,您可以使用带有view_name-&gt;view_function 映射的字典,而不是从globals() 调用函数。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-10-15
        • 2016-05-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-27
        • 2020-12-20
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        相关资源
        最近更新 更多