使用此方法:
def postcodes(request):
with open('core/stores.json') as f:
data = json.load(f)
return JsonResponse(data, safe=False)
我将本地json文件加载到此url中:
urlpatterns = [
path('stores/', views.postcodes, name='postcodes'),
]
它完美呈现,现在,我的json文件看起来像这样:
[
{
"name": "St_Albans",
"postcode": "AL1 2RJ"
},
{
"name": "Hatfield",
"postcode": "AL9 5JP"
},
{
"name": "Worthing",
"postcode": "BN14 9GB"
},
依此类推...
如您所见,如果考虑到邮政编码,这是按字母顺序排列的。
我需要的是读取此文件,并按字母顺序对其进行渲染,但不是按原样(由postcode
)而是由name
渲染。
我不认为我可以使用内置的Django循环或标签,因为它们主要用于模型或存储的数据。
但是我不确定。
有什么比将所有内容都保存到数据库更快的方法呢?
我查看了serializers
,但这是为了django-rest-framework
,我在这里使用普通的requests
。
有什么想法吗?
我现在不使用任何模板,它只是按原样显示在浏览器上。
答案 0 :(得分:2)
您可以使用.sort(..)
来订购列表:
import json
from operator import itemgetter
def postcodes(request):
with open('core/stores.json') as f:
data = json.load(f)
data.sort(key=itemgetter('name'))
return JsonResponse(data, safe=False)
然后将内容呈现为:
[
{"name": "Hatfield", "postcode": "AL9 5JP"},
{"name": "St_Albans", "postcode": "AL1 2RJ"},
{"name": "Worthing", "postcode": "BN14 9GB"}
]
请注意,如果您想始终按字母顺序提取邮政编码 ,则最好按该顺序对stores.json
文件进行简单排序。