【发布时间】:2020-05-06 14:35:53
【问题描述】:
我正在用 Django 构建一个应用程序。
我正在开发一个 API 服务视图,该视图返回存储在我的模型中的城市列表及其特征:
def cities_list_api(request):
cities = target_area_input_data.objects.all()
data = {"cities":list(cities.values("pk","Name","Longitude","Latitude","Radius"))}
response = JsonResponse(data)
return response
返回:
{“城市”:[{“pk”:2,“名称”:“罗马”,“经度”:12.49, “纬度”:41.89,“半径”:10.5},{“pk”:6,“名称”:“河内, 越南”,“经度”:105.84,“纬度”:21.02,“半径”: 10.0},{“pk”:1,“名称”:“米兰”,“经度”:9.19,“纬度”:45.46,“半径”:8.0},{“pk”:3,“名称”:“博洛尼亚” ",“经度”:11.34,“纬度”:44.49,“半径”:5.5},{“pk”:4,“名称”:“维罗纳”,“经度”:10.97, “纬度”:45.41,“半径”:4.5},{“pk”:5,“名称”:“pszczyna, Polonia”,“经度”:18.93,“纬度”:49.98,“半径”: 3.0}]}
为了简短起见,我可以编写相同的视图:
def cities_list_api(request):
cities = target_area_input_data.objects.all()
data = {"cities":list(cities.values())}
response = JsonResponse(data)
return response
这样我就不必将所有字段都写在 values() 括号内。
现在,我正在开发一个 API 服务视图,它返回给定城市 ID 的城市特征。
def city_detail_api(request, pk):
try:
city = target_area_input_data.objects.get(pk=pk)
data = {
"city":
{
"pk":city.pk,
"Name":city.Name,
"Longitude":city.Longitude,
"Latitude":city.Latitude,
"Radius":city.Radius,
}
}
response = JsonResponse(data)
return response
返回:
{“城市”:{“pk”:2,“名称”:“罗马”,“经度”:12.494757,“纬度”:41.892786,“半径”:10.5}}
我只想将所需实例的所有属性显示在字典中,该字典保存在字典键 city 中,因此,为了简短起见,我想将该视图更改为这个:
def city_detail_api(request, pk):
try:
city = target_area_input_data.objects.get(pk=pk)
data = {
"city":right_expression
}
response = JsonResponse(data)
return response
right_expression 应该是什么?
即使这次我如何避免写所有字段?
【问题讨论】:
标签: python api dictionary model