Django: request.GET и KeyError
код:
# it 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 Framework я обычно должен проверять наличие параметра и перенаправлять пользователя где-нибудь, если это не так. Но в параметре неинициализированного Django появляется страница с 500 ошибками, и это кажется желаемым поведением. Так что нормально оставить код как есть или есть лучший практик? Должен ли я всегда использовать стандартные параметры, передаваемые как/myaction/paramvalue/вместо/myaction? Param_name = param_value (его сложно создать для URL-адресов для ajax-запросов)?
Ответы
Ответ 1
Ваш сервер никогда не должен создавать страницу с ошибкой 500.
Вы можете избежать ошибки, используя:
my_param = request.GET.get('param', default_value)
или
my_param = request.GET.get('param')
if my_param is None:
return HttpResponseBadRequest()
Ответ 2
Да, вы должны проверить KeyError
в этом случае. Или вы можете сделать это:
if 'param' in request.GET:
my_param = request.GET['param']
else:
my_param = default_value
Ответ 3
Как передать значение по умолчанию, если параметр не существует?
my_param = request.GET.get('param', 'defaultvalue')