在vi调用的函数中返回HTTP响应

2024-09-26 22:45:03 发布

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

在视图中,我接受json键和值请求.正文. 我计划检查另一个函数中是否存在所需的json键(可能是打字错误)

def checkJsonKey(form, *args):
    for key in enumerate(args):
        if key not in form:
            return HttpResponse(status = 400) #<--

这个函数可以直接返回response并终止这个view函数,而不是检查返回值吗?在

在我的视图函数中

^{pr2}$

Tags: key函数inform视图jsonforif
3条回答

检查从checkJsonKey返回的值是否为None,如果不是,那么它一定返回了您的响应,您可以从view函数返回该值。在

def my_view(request, *args, **kwargs):
    form = json.loads(request.body)
    response = checkJsonKey(form, *args)
    if response is not None:
        return response

下面是我将如何处理这个问题,使用异常然后捕捉它,而不是返回响应,这允许您从函数返回大量错误条件,并在try/except catcher中处理它们。在

def checkJsonKey(form, *args):
    if type(form) not dict:
        raise ValueError("Not dict")
    # assuming you actually want to deal with a list of the args, and not a turple pairs from enumerate
    for key in list(args):
        # assuming that form is a dict
        if key not in form.keys():
            raise ValueError("Key not found")
    return True

这将被称为

^{pr2}$

如果你想变得更花哨,你可以定义你自己的错误类,并为此专门捕捉

这不会有多大区别,但如果你想换一种方法,json.loads()从传递给它的json字符串中返回一个字典,通过调用form[key]语法可以轻松地检查其中是否存在键。您可以进一步检查json API here的文档。在

试试这个:

def checkJsonKey(form, *args):
    for key in enumerate(args):
        if form[key] != None:
            return False
        return True

def my_view(request, *args, **kwargs):
    form = json.loads(request.body)
    response = checkJsonKey(form, *args)
    if response:
        return HttpResponse(status = 200)
    else:
        return HttpResponse(status = 400)

相关问题 更多 >

    热门问题