Код:
# it's an ajax request, so parameters are passed via GET method def my_view(request): my_param = request.GET['param'] // should I check for KeyError exception?
В PHP Frameworks мне обычно приходится проверять наличие параметра и перенаправлять пользователя куда-либо, если это не так. Но в Django несуществующий параметр приводит к 500 страницам ошибок и кажется желаемым поведением. Так можно ли оставить код как есть или есть лучший метод? Должен ли я всегда использовать стандартные параметры, передаваемые как / myaction / paramvalue / вместо / myaction? Param_name = param_value (такие URL довольно сложно создать для запросов ajax)?
Ваш сервер никогда не должен выдавать страницу с ошибкой 500.
Вы можете избежать ошибки, используя:
my_param = request.GET.get('param', default_value)
или
my_param = request.GET.get('param') if my_param is None: return HttpResponseBadRequest()
Да, вы должны проверить для KeyError в этом случае. Или вы можете сделать это:
KeyError
if 'param' in request.GET: my_param = request.GET['param'] else: my_param = default_value
Как насчет передачи значения по умолчанию, если param не существует?
my_param = request.GET.get('param', 'defaultvalue')