Django:request.GET和KeyE

2024-06-07 05:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

# 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有点困难)?


Tags: 代码an参数getsoparamrequestmy
3条回答

如果param不存在,那么传递默认值如何?

my_param = request.GET.get('param', 'defaultvalue')

您的服务器不应该产生500个错误页。

您可以使用以下方法来避免错误:

my_param = request.GET.get('param', default_value)

或:

my_param = request.GET.get('param')
if my_param is None:
    return HttpResponseBadRequest()

是的,在这种情况下,您应该检查KeyError。或者你可以这样做:

if 'param' in request.GET:
    my_param = request.GET['param']
else:
    my_param = default_value

相关问题 更多 >