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

tej*_*tan 20 django arguments view

我有一个功能在视图中

def  calculate(request , b)
Run Code Online (Sandbox Code Playgroud)

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

小智 63

您可能还需要更新URL分派以使用或不使用可选参数来处理请求.

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

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

  • 我认为这是答案中最重要的部分. (12认同)

Kee*_*Kee 7

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

在您的情况下,您可以:

def calculate(request, b=None)
    pass
Run Code Online (Sandbox Code Playgroud)

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

{% if b %}
    Case A
{% else %}
    Case B
{% endif %}
Run Code Online (Sandbox Code Playgroud)