我可以在视图函数中的函数中返回响应吗?

时间:2016-12-20 07:59:41

标签: python django web

这里是视图功能:

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

及以下有视图功能中使用的功能:

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)返回给客户端吗?

像提高 Http404

之类的东西

2 个答案:

答案 0 :(得分:2)

简短的回答是你不能直接在那里做,因为调用函数仍然需要对来自get_record_for_model的返回值做一些事情。也就是说,我建议您执行类似下面的操作,将数据以及找到/未找到的布尔值发送回调用函数:

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)

答案 1 :(得分:0)

使用django的内置快捷方式get_object_or_404

function myFunction(source_folder, dest_folder) {
  source_folder = DriveApp.getRootFolder()
  dest_folder = DriveApp.getFolderById("ID")

  var files = DriveApp.getFilesByName('FileName');
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
    dest_folder.addFile(file);
    source_folder.removeFile(file);
  }
}