Вам также может потребоваться обновить отправку URL-адреса для обработки запроса с необязательным параметром или без него.
url(r'^calculate/?(?P<b>\d+)?/?$', 'calculate', name='calculate'),
url(r'^calculate/$', 'calculate', name='calculate'),
Если вы передадите b через URL, оно попадет в первое определение URL. Если вы не включите необязательный параметр, он попадает во второе определение, но переходит к тому же представлению и использует предоставленное вами значение по умолчанию.