Django从另一个视图文件

时间:2017-10-10 13:13:04

标签: python json django api

我在views目录中有两个文件,/ views / api.py和/views/pages.py

/views/api.py包含返回JSONResponses对象的方法

示例:

@api_view(['GET'])
def foos(request):
    foos = get_list_or_404(Foo)
    data = [{'id': foo.id,
            'name': foo.name,
            'description': foo.description,
            'tag': foo.tag} for foo in foos]
    return JsonResponse({'foos': data})

/views/pages.py将有一些方法可以访问/views/api.py中的一些方法,并将它们添加到上下文并呈现页面。

示例:

def home(request):
    foos = api.foos(request)
    print foos
    return HttpResponse(status=200)

在行打印堆栈上,我可以看到具有正确数据的JSONResponse对象。如何访问foos中的单个值,以便创建列表或字典或为每个视图自定义的内容?

1 个答案:

答案 0 :(得分:0)

首先考虑公共部分(nb:使用Queryset.values()重写以提高效率):

# somewhere.py
def get_foos():
    return list(Foo.objects.values('id', 'name', 'description', 'tag'))

然后从你的观点中调用它:

# views/api.py
from somewhere import get_foos

@api_view(['GET'])
def foos(request):
    data = get_foos()
    return JsonResponse({'foos': data})

# views/pages.py   
from somewhere import get_foos

def home(request):
    foos = get_foos()
    print foos
    return HttpResponse(status=200)