Django 表单的数据统计和报表生成
在 Django 中,可以使用表单类来接收用户提交的数据,然后对这些数据进行处理和统计,最终生成报表。
下面是一个简单的示例,展示如何使用 Django 表单类统计用户输入的字符串中包含指定关键字的数量,并生成报表:
# forms.py from django import forms class KeywordForm(forms.Form): string = forms.CharField(label='输入字符串') keyword = forms.CharField(label='关键字') # views.py from django.shortcuts import render from django.http import HttpResponse from collections import Counter import pandas as pd from .forms import KeywordForm def keyword_count(request): if request.method == 'POST': form = KeywordForm(request.POST) if form.is_valid(): string = form.cleaned_data['string'] keyword = form.cleaned_data['keyword'] count = string.count(keyword) return generate_report(string, count, keyword) else: form = KeywordForm() return render(request, 'keyword_count.html', {'form': form}) def generate_report(string, count, keyword): data = {'输入字符串': [string], '关键字': [keyword], '数量': [count]} df = pd.DataFrame(data) report = df.to_html() return HttpResponse(report)
上述代码中,定义了一个名为 KeywordForm
的表单类,包含两个字段:string
和 keyword
。在视图函数 keyword_count
中,处理用户提交的表单数据,使用 Python 标准库 collections
模块中的 Counter
类统计字符串中包含关键字的数量,然后生成报表。
生成报表的过程中,使用了 Python 数据分析的强大库 pandas
,先将需要展示的数据存储在一个字典中,然后通过 pandas.DataFrame
方法将数据转化为 DataFrame 对象,并调用 to_html()
方法将 DataFrame 对象转化为 HTML 格式的报表内容。
在对应的 HTML 模板中使用 safe
过滤器 渲染报表内容即可。
示例代码已上传至 GitHub 项目中:https://github.com/pidancode/django-form-report-demo
相关文章