Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django视图中传递可选参数_Django_View_Arguments - Fatal编程技术网

如何在Django视图中传递可选参数

如何在Django视图中传递可选参数,django,view,arguments,Django,View,Arguments,我有一个功能,比如 def calculate(request , b) 我希望即使b没有传递给它,这个函数也能工作 将默认值传递给方法会使参数成为可选的 在您的情况下,您可以: def calculate(request, b=None) pass 然后,在模板中,您可以对不同的行为使用条件: {% if b %} Case A {% else %} Case B {% endif %} 您可能还需要更新URL调度以处理带有或不带可选参数的请求 url(r'^c

我有一个功能,比如

def  calculate(request , b)
我希望即使b没有传递给它,这个函数也能工作


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

在您的情况下,您可以:

def calculate(request, b=None)
    pass
然后,在模板中,您可以对不同的行为使用条件:

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

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

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

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

我认为这是答案中最重要的部分。能否在
反向('calculate',…)中同时使用这两个定义,您可以提供args和kwargs作为传递给reverse方法的属性。超级正确!或者,由于需要定义两个单独的url,您可能希望在url本身中指定缺少的参数的默认值,以便将所有决定保留在一个位置:
url(r'^calculate/$,'calculate',{'b':3},name='calculate',
{% if b %}
    Case A
{% else %}
    Case B
{% endif %}
url(r'^calculate/?(?P<b>\d+)?/?$', 'calculate', name='calculate'),  
url(r'^calculate/$', 'calculate', name='calculate'),