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

如何在Python Django应用中利用JSON数据生成网页下拉列表

Django集成Excel数据生成下拉列表解决方案

我是Python新手,正在开发Django Web应用,需要读取Excel文件中的数据并在网页上以下拉列表形式展示。已创建应用结构,编写了Excel转JSON的脚本:

import pandas
import json

# Read excel document
excel_data_df = pandas.read_excel('Test-Data.xlsx', sheet_name='Sheet1')

# Convert excel to string
# (define orientation of document in this case from up to down)
thisisjson = excel_data_df.to_json(orient='records')

# Print out the result
print('Excel Sheet to JSON:\n', thisisjson)
thisisjson_dict = json.loads(thisisjson)

with open('data.json', 'w') as json_file:
    json.dump(thisisjson_dict, json_file)

脚本输出的JSON数据:

[{"Name":"Jan","Month":1},{"Name":"Feb","Month":2},{"Name":"March","Month":3},{"Name":"April","Month":4},{"Name":"May","Month":5},{"Name":"June","Month":6},{"Name":"July","Month":7},{"Name":"August","Month":8},{"Name":"Sep","Month":9},{"Name":"October","Month":10},{"Name":"November","Month":11},{"Name":"December","Month":12}]

期望实现的下拉列表效果对应的HTML:

<!DOCTYPE html>
<html>
<body>

<h1>The select element</h1>

<p>The select element is used to create a drop-down list.</p>

<form action="">
  <label for="months">Choose a Month:</label>
  <select name="months" id="month">
    <option value="1">Jan</option>
    <option value="2">Feb</option>
    <option value="3">March</option>
    <option value="4">April</option>
  </select>
  <br><br>
  <input type="submit" value="Submit">
</form>
</body>
</html>

当前需解决:如何将上述功能集成到Django应用中,利用生成的JSON数据创建网页下拉列表。


步骤1:整合Excel解析逻辑到Django视图

无需单独生成JSON文件,直接在视图中解析Excel并传递数据给模板:

  1. 先安装依赖:
pip install pandas openpyxl
  1. 在应用的views.py中添加视图函数:
from django.shortcuts import render
import pandas

def month_dropdown(request):
    # 将Test-Data.xlsx放到项目根目录,或使用绝对路径
    excel_data_df = pandas.read_excel('Test-Data.xlsx', sheet_name='Sheet1', engine='openpyxl')
    # 直接转换为字典列表,跳过JSON文件存储步骤
    months_data = excel_data_df.to_dict(orient='records')
    return render(request, 'month_dropdown.html', {'months': months_data})

步骤2:配置URL路由

  1. 在应用的urls.py中添加路由:
from django.urls import path
from . import views

urlpatterns = [
    path('months/', views.month_dropdown, name='month_dropdown'),
]
  1. 将应用路由包含到项目根目录的urls.py:
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('your_app_name.urls')),  # 替换为你的应用名称
]

步骤3:编写Django模板渲染下拉列表

在应用的templates目录下创建month_dropdown.html:

<!DOCTYPE html>
<html>
<body>

<h1>The select element</h1>

<p>The select element is used to create a drop-down list.</p>

<form action="">
  <label for="months">Choose a Month:</label>
  <select name="months" id="month">
    {% for month in months %}
        <option value="{{ month.Month }}">{{ month.Name }}</option>
    {% endfor %}
  </select>
  <br><br>
  <input type="submit" value="Submit">
</form>
</body>
</html>

可选:读取预生成的JSON文件

若坚持使用已生成的data.json,视图可修改为:

from django.shortcuts import render
import json

def month_dropdown(request):
    with open('data.json', 'r') as json_file:
        months_data = json.load(json_file)
    return render(request, 'month_dropdown.html', {'months': months_data})

注意事项

  • 确保Excel文件路径正确,建议放到项目根目录或应用的static目录
  • 若Excel数据会更新,可使用Django管理命令定时重新解析,或在视图中添加缓存避免重复读取
  • 生产环境建议将Excel数据存入数据库,从数据库读取生成下拉列表,提升性能

内容的提问来源于stack exchange,提问作者Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:05:26