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

如何在Django中将字典列表转换为表格或CSV文件?

在Django中处理招聘数据列表:生成表格与CSV文件

一、生成HTML表格(前端展示)

步骤1:视图中准备数据与指定字段

在Django视图函数中,传入待展示的招聘数据列表,同时指定需要作为表格列的字段:

from django.shortcuts import render

def job_list(request):
    # 你的招聘数据列表(示例)
    jobs_data = [
        {"name": "Python开发工程师", "description": "负责后端接口开发与维护", "key_skills": "Python,Django,RESTful", "employer": "云帆科技"},
        {"name": "前端开发工程师", "description": "负责PC端与移动端页面开发", "key_skills": "React,Vue,JavaScript", "employer": "星辰互娱"},
        # 剩余8条数据...
    ]
    # 指定要显示的列字段
    display_fields = ["name", "description", "key_skills", "employer"]
    return render(request, 'jobs/job_table.html', {'jobs_data': jobs_data, 'display_fields': display_fields})

步骤2:模板中渲染表格

创建对应的模板文件(如templates/jobs/job_table.html),利用Django模板语法渲染带序号的表格:

<table border="1" cellpadding="8" cellspacing="0">
    <thead>
        <tr>
            <th>序号</th>
            {% for field in display_fields %}
                <th>{{ field|title }}</th>
            {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for job in jobs_data %}
            <tr>
                <td>{{ forloop.counter }}</td>
                {% for field in display_fields %}
                    <td>{{ job.get(field, "-") }}</td>
                {% endfor %}
            </tr>
        {% empty %}
            <tr>
                <td colspan="{{ display_fields|length|add:1 }}">暂无招聘信息</td>
            </tr>
        {% endfor %}
    </tbody>
</table>

forloop.counter自动生成行序号,job.get(field, "-")处理字段为空的情况,|title将字段名转为首字母大写的标题格式。

二、生成CSV文件(导出下载)

通过Django视图直接生成并返回CSV文件,支持用户下载保存:

from django.http import HttpResponse
import csv

def export_jobs_csv(request):
    # 你的招聘数据列表
    jobs_data = [
        {"name": "Python开发工程师", "description": "负责后端接口开发与维护", "key_skills": "Python,Django,RESTful", "employer": "云帆科技"},
        {"name": "前端开发工程师", "description": "负责PC端与移动端页面开发", "key_skills": "React,Vue,JavaScript", "employer": "星辰互娱"},
        # 剩余8条数据...
    ]
    # 指定CSV的列字段
    csv_fields = ["name", "description", "key_skills", "employer"]
    
    # 配置HTTP响应,指定CSV类型与下载文件名
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="recruitment_jobs.csv"'
    
    # 初始化CSV写入器
    writer = csv.writer(response)
    # 写入表头(序号+指定字段)
    writer.writerow(["序号"] + [field.title() for field in csv_fields])
    
    # 逐行写入数据
    for idx, job in enumerate(jobs_data, start=1):
        row_content = [idx]
        for field in csv_fields:
            # 若字段不存在则填空字符串
            row_content.append(job.get(field, ""))
        writer.writerow(row_content)
    
    return response

配置URL

在项目的urls.py中添加导出CSV的路由:

from django.urls import path
from . import views

urlpatterns = [
    path('jobs/', views.job_list, name='job_list'),
    path('jobs/export/', views.export_jobs_csv, name='export_jobs_csv'),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:45:38