Django:request.GET 和 KeyError
代码:
# 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框架中,我通常需要检查参数是否存在,如果不存在就把用户重定向到其他地方。但是在Django中,如果参数不存在,就会出现500错误页面,这似乎是预期的行为。那么这样写代码可以吗?还是说有更好的做法?我应该总是使用标准的参数传递方式,比如/myaction/paramvalue/,而不是/myaction?param_name=param_value(对于ajax请求来说,构建这样的URL有点困难)?
3 个回答
1
如果参数不存在的话,怎么传递默认值呢?
my_param = request.GET.get('param', 'defaultvalue')
12
是的,在这种情况下,你应该检查一下是否有KeyError
错误。或者你也可以这样做:
if 'param' in request.GET:
my_param = request.GET['param']
else:
my_param = default_value
61
你的服务器不应该出现500错误页面。
你可以通过以下方式来避免这个错误:
my_param = request.GET.get('param', default_value)
或者:
my_param = request.GET.get('param')
if my_param is None:
return HttpResponseBadRequest()