【问题标题】:How can i pass optional arguments in Django view如何在 Django 视图中传递可选参数
【发布时间】:2011-09-23 11:47:43
【问题描述】:

我有一个功能,比如

def  calculate(request , b)

我希望即使 b 没有传递给它,这个函数也应该工作

【问题讨论】:

    标签: django view arguments


    【解决方案1】:

    您可能还需要更新您的 URL 调度以处理带有或不带有可选参数的请求。

    url(r'^calculate/?(?P<b>\d+)?/?$', 'calculate', name='calculate'),  
    url(r'^calculate/$', 'calculate', name='calculate'),
    

    如果您通过 URL 传递 b,它会命中第一个 URL 定义。如果您不包含可选参数,它会命中第二个定义,但会转到相同的视图并使用您提供的默认值。

    【讨论】:

    • 我认为这是答案中最重要的部分。
    • 你能在reverse('calculate', ...)中同时使用这两个定义吗?
    • 是的,您可以提供 args 和 kwargs 作为属性传递给 reverse 方法。
    • 超级正确!或者,由于需要定义两个单独的 url,您可能希望在 url 本身中指定缺失参数的默认值,以将所有决定保存在一个位置:url(r'^calculate/$', 'calculate', {'b': 3}, name='calculate'),
    【解决方案2】:

    Default arguments.

    def calculate(request, b=3):
    

    【讨论】:

      【解决方案3】:

      将默认值传递给方法使参数成为可选参数。

      在你的情况下,你可以:

      def calculate(request, b=None)
          pass
      

      然后在您的模板中,您可以将条件用于不同的行为:

      {% if b %}
          Case A
      {% else %}
          Case B
      {% endif %}
      

      【讨论】:

        【解决方案4】:
        def calculate(request, b=None)
        

        【讨论】:

          猜你喜欢
          • 2020-11-02
          • 2014-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-25
          • 2012-01-17
          • 2017-12-13
          • 1970-01-01
          相关资源
          最近更新 更多