如何在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
相关产品推荐
相关产品推荐

