如何在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'),