Как я могу передать необязательные аргументы в представлении Django - PullRequest
18 голосов
/ 27 июня 2011

У меня есть одна функция, как

def  calculate(request , b)

Я хочу, чтобы эта функция работала, даже если b не передается ей

Ответы [ 4 ]

59 голосов
/ 27 июня 2011

Вам также может потребоваться обновить отправку URL-адреса для обработки запроса с необязательным параметром или без него.

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

Если вы передадите b через URL, оно попадет в первое определение URL. Если вы не включите необязательный параметр, он попадает во второе определение, но переходит к тому же представлению и использует предоставленное вами значение по умолчанию.

23 голосов
/ 27 июня 2011

Аргументы по умолчанию .

def calculate(request, b=3):
7 голосов
/ 27 июня 2011

Передача значения по умолчанию в метод делает параметр необязательным.

В вашем случае вы можете сделать:

def calculate(request, b=None)
    pass

Тогда в вашем шаблоне вы можете использовать условие для другого поведения:

{% if b %}
    Case A
{% else %}
    Case B
{% endif %}
0 голосов
/ 27 июня 2011
def calculate(request, b=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...