You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django模板中展示JSON文件内容的技术实现问询

在Django模板中展示JSON文件内容的技术实现问询

我来帮你搞定在Django主页展示JSON文件内容的需求,咱们分两步修改代码就能实现:


第一步:修改views.py,读取JSON文件并传递数据给模板

首先你需要导入json、os模块以及Django的settings来正确定位JSON文件路径,然后读取文件内容并传给模板。修改后的homepage函数如下:

from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth import get_user_model
from django.conf import settings
import json
import os

#from . import models

def homepage(request):
    # 拼接JSON文件的绝对路径,避免硬编码路径导致的错误
    json_file_path = os.path.join(settings.BASE_DIR, 'assets', 'jsons', 'quotes.json')
    
    # 读取并解析JSON文件
    try:
        with open(json_file_path, 'r', encoding='utf-8') as f:
            json_data = json.load(f)
        # 将JSON数据转成格式化的字符串,方便在页面上可读性展示
        json_formatted_text = json.dumps(json_data, indent=4, ensure_ascii=False)
    except FileNotFoundError:
        json_formatted_text = "JSON文件未找到,请检查路径是否正确"
    
    # 把格式化后的文本和原JSON数据都传给模板
    return render(request, 'homepage.html', {
        'json_formatted_text': json_formatted_text,
        'json_data': json_data
    })

def about(request):
    return render(request,'about.html')

def users(request):
    User = get_user_model()
    users = User.objects.all()
    return render(request,'users.html',{'users':users})

这里做了几个关键处理:

  • 用settings.BASE_DIR拼接路径:BASE_DIR是Django项目的根目录,这样不管项目部署在哪里,都能正确找到JSON文件
  • 加了异常捕获:防止文件找不到时页面报错
  • 用json.dumps格式化字符串:生成带缩进的易读文本,ensure_ascii=False保证非ASCII字符正常显示

第二步:修改homepage.html,展示JSON内容

你需要用<pre>标签来展示格式化的JSON文本(它会保留缩进和换行),同时如果需要在JS中使用数据,要加上|safe过滤器避免Django自动转义引号。修改后的模板内容:

{% extends 'layout.html' %}
{% block title %} Home {% endblock %}

{% block content %}
{% load static %}

<h1>Home</h1>
<p>Welcome {{request.user}}</p>
<p>Check out my <a href="/about">About</a> page.</p>

<!-- 展示格式化的JSON文本,用pre标签保留格式 -->
<h2>JSON文件内容:</h2>
<pre>{{ json_formatted_text }}</pre>

<!-- 如果需要在JavaScript中使用JSON数据,这样处理 -->
<script type="text/javascript">
    // 用|safe过滤器让Django不转义JSON的引号
    const json1_data = {{ json_data|safe }};
    console.log(json1_data);
</script>
{% endblock %}

这里的关键细节:

  • <pre>标签:专门用来展示预格式化的文本,能完美保留JSON的缩进结构
  • |safe过滤器:Django默认会转义HTML特殊字符(比如引号),加上这个过滤器后,JS才能正确解析JSON对象

注意事项

  1. 确认assets/jsons/quotes.json的位置是否正确:如果你的assets文件夹是在某个APP的static目录下,需要调整json_file_path的拼接逻辑,比如os.path.join(settings.BASE_DIR, '你的APP名称', 'static', 'assets', 'jsons', 'quotes.json')
  2. 如果你只是想把JSON的原始内容(未解析的字符串)直接展示,也可以直接读取文件的原始文本,不用json.load和json.dumps,直接f.read()即可

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 09:14:37