python - 我可以在 View 函数内的函数中返回响应吗?

标签 python django web

这是 View 函数:

def bar(request):
    ...
    record = get_record_from_model(model, **kwargs)
    ...
    return JsonResponse(data_to_response)

下面是 View 函数中使用的函数:

def get_record_from_model(model, **kwargs):
    try:
        return model.objects.get(**kwargs)
    except model.DoesNotExist:
        error_data = copy.copy(settings.ERROR["NOT_EXIST_ERR"])
        return JsonResponse(error_data)

发生异常时,可以在get_record_from_model函数中返回JsonResponse(error_data)给客户端吗?

类似于 raise Http404

最佳答案

简短的回答是,您不能直接在那里执行此操作,因为调用函数仍然必须对 get_record_for_model 的返回值执行某些操作。也就是说,我建议您执行如下操作,将数据以及找到/未找到的 bool 值发送回调用函数:

def get_record_from_model(model, **kwargs):
    try:
        return model.objects.get(**kwargs), True

    except model.DoesNotExist:
        error_data = copy.copy(settings.ERROR["NOT_EXIST_ERR"])
        return error_data, False

...

def bar(request):
    ...
    data, found = get_record_from_model(model, **kwargs)
    if not found:
        return JsonResponse(data, status=404)
    ...
    return JsonResponse(response_data)

关于python - 我可以在 View 函数内的函数中返回响应吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237393/

相关文章:

python - 将Python程序从GTK+2移植到GTK+3

python - eval 在评估生成器时未能检测到迭代变量

python - 在Pygame中根据FPS制作时间延迟

python - Ubuntu : Unable to correct problems, 你有损坏的包

python - Django 管理员 : Grouped data in the list

sockets - Java 服务器中的安全 WebSocket (WSS) 和 javascript 中的客户端

python - 使用 python 将文件上传到 slack 时如何解析 `raise KeyError(key) from None KeyError: [SLACK_BOT_TOKEN_HERE]`?

django - 可以使用 Django REST Swagger 生成静态 HTML 文档吗?

html - 如何将手机网站链接到我的电脑版网站

javascript - 如何使用Python追踪网页中特定时间段内的特定内容?