python - Django:request.GET 和 KeyError

标签 python django django-urls

代码:

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

最佳答案

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

您可以通过以下方式避免错误:

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

或:

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

关于python - Django:request.GET 和 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845582/

相关文章:

python - Django 3.0 中不区分大小写的 URLS?

python - 使用多核的 Pip 构建选项

python - 在 Windows 10 上安装 Kivy 时出现问题

Python cron 作业文件访问

python - 是否可以从字符串制作 Django urlpatterns?

python - 如何在 django 的 url 中传递特殊字符

python - 如何使用python检查GCS中是否存在桶

Django 管理员 - FORCE_SCRIPT_NAME 在 POST 时附加到 URL 两次

python - 如何识别 Bootstrap 模板中的 CSS 样式路径?

django pisa - pagenumber 仅适用于两页或更多页 - 显示总页数