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')