python - 按字母顺序加载 JSON 文件 - Django
问题描述
使用这种方法:
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
这里使用的是普通的。
有任何想法吗?
我现在没有使用任何模板,它只是按原样呈现在浏览器上。
解决方案
您可以使用以下命令订购列表.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
文件进行排序,已经按该顺序。
推荐阅读
- javascript - 动态显示选中复选框值列表 js/jquery
- java - 私有静态内部类 - Powermock
- wordpress - Wordpress 在首页突出显示最近的帖子
- xml - 将 Bitmap 实现为 base64 序列化器
- android - 单击 recyclerView 中的项目以更改其颜色时的错误行为?
- r - 编辑时抛出 RStudio 错误?
- python - 两个列表计算特定元素并根据特定规则聚合
- apache-spark - Where to set "spark.yarn.executor.memoryOverhead"
- tailwind-css - purgecss CLI -c 找不到模块 purgecss.config.js
- android - 在 Android 中使用 Glide 和 Kotlin 在 ScrollView / RecyclerView 中显示 n 个图像