怎么样用django将后台数据库表里面的内容以Excel表格的形式显示到网页中

首页 / 常见问题 / 低代码开发 / 怎么样用django将后台数据库表里面的内容以Excel表格的形式显示到网页中
作者:低代码开发工具 发布时间:10-25 13:58 浏览量:8893
logo
织信企业级低代码开发平台
提供表单、流程、仪表盘、API等功能,非IT用户可通过设计表单来收集数据,设计流程来进行业务协作,使用仪表盘来进行数据分析与展示,IT用户可通过API集成第三方系统平台数据。
免费试用

管理后台由网站的管理员负责查看、添加、修改、删除数据,为此,Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模块,用django将后台数据库表里面的内容以Excel表格的形式显示到网页中。

一、用django将后台数据库表里面的内容以Excel表格的形式显示到网页中

管理后台由网站的管理员负责查看、添加、修改、删除数据,为此,Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模块,用django将后台数据库表里面的内容以Excel表格的形式显示到网页中。

基本实现导出功能

在admin.py定义导出函数

# 实现数据导出功能

exportable_fields = (‘username’, ‘city’, ‘phone’, ‘bachelor_school’, ‘master_school’, ‘degree’, ‘first_result’, ‘first_interviewer_user’,

                     ‘second_result’, ‘second_interviewer_user’, ‘hr_result’, ‘hr_score’, ‘hr_remark’, ‘hr_interviewer_user’)

# request是用户发起的请求,queryset是用户在界面上选择的结果列表里面的数据集合

def export_model_as_csv(modeladmin,request,queryset): # request是用户发起的请求,queryset用户在列表选择的结果列表里的数据集合

    response = HttpResponse(content_type=’text/csv’)

    field_list = exportable_fields  # 导出的字段

    # 指定导出文件的格式

    response[‘Content-Disposition’] = ‘attachment; filename=%s-list-%s.csv’ %(

        ‘name’,

        datetime.now().strftime(‘%Y-%m-%d-%H-%M-%S’)

    )

    #写入表头

    writer = csv.writer(response)

    writer.writerow(

        # 把每一个字段对应的页面显示的中文名,作为我们导出文件里面的表头,

        [queryset.model._meta.get_field(f).verbose_name.title() for f in field_list]

    )

    # 把数据的每一行写进去

    for obj in queryset:

        #单行记录(各个字段的值)写入到csv文件

        csv_line_values = []

        for field in field_list:

            field_object = queryset.model._meta.get_field(field)

            field_value = field_object.value_from_object(obj)

            csv_line_values.append(field_value)

        writer.writerow(csv_line_values)

        logging.info(‘%s exported %s candidate records’ % (request.user, len(queryset)))

    return response

# 定义这个函数的属性

export_model_as_csv.short_description = u’导出为CSV文件’

# 导出按钮的权限,如果用户有export的权限,则运行调用allowed_permissions这个方法,则菜单会展示出来

export_model_as_csv.allowed_permissions = (‘export’, )

class CandidateAdmin(admin.ModelAdmin):

    # 定义actions,将函数注册到actions里面

    actions = [export_model_as_csv, ]

    pass

用pandas实现导出功能

def export_model_as_csv(modeladmin,request,queryset): # request是用户发起的请求,queryset用户在列表选择的结果列表里的数据集合

    response = HttpResponse(content_type=’text/csv’)

    response[‘Content-Disposition’] = ‘attachment; filename=%s-list-%s.csv’ % (

        ‘name’,

        datetime.now().strftime(‘%Y-%m-%d-%H-%M-%S’)

    )

    data = pd.DataFrame(list(queryset.values()))

    id_list = list(data[‘app_username’].unique())

    name_list = []

    for i in id_list:

        name = str(data[data[‘app_username’] == i][‘name’].unique()[0])

        name_list.append(name)

    new_data = pd.DataFrame(columns=pd.MultiIndex.from_product([data[‘sign_date’].unique(), [‘早’, ‘中’, ‘晚’]]), index=pd.MultiIndex.from_arrays([id_list, name_list],names=[‘学号’,’姓名’]))

    for i in range(len(data)):

        obj = data.iloc[i]

        new_data.loc[obj[‘app_username’],obj[‘name’]][obj[‘sign_date’].strftime(‘%Y-%m-%d’)]=[JudgeTem(obj[‘morning_temperature’]), JudgeTem(obj[‘afternoon_temperature’]), JudgeTem(obj[‘evening_temperature’])]

    new_data = new_data.style.applymap(color, subset=new_data.columns)

    output = io.BytesIO()  # 配置一个BytesIO 这个是为了转二进制流

    new_data.to_excel(output)

    output.seek(0)  # 把游标归0

    response.write(output.getvalue())  # 写入数据

    output.close()  # 关闭

    return response  # 返回

延伸阅读:

二、Django 是什么

Django 是一个高级的 Python 网络框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django 负责处理网站开发中麻烦的部分,因此你可以专注于编写应用程序,而无需重新开发。 它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

Django 可以使你的应用具有以下优点:

完备性

Django 遵循“功能完备”的理念,提供开发人员可能想要“开箱即用”的几乎所有功能。因为你需要的一切都是一个”产品“的一部分,它们都可以无缝结合在一起,遵循一致性设计原则,并且具有广泛和最新的文档。

通用性

Django 可以(并已经)用于构建几乎任何类型的网站—从内容管理系统和维基,到社交网络和新闻网站。它可以与任何客户端框架一起工作,并且可以提供几乎任何格式(包括 HTML,Rss 源,JSON,XML 等)的内容。你正在阅读的网站就是基于 Django。

在内部,尽管它为几乎所有可能需要的功能(例如几个流行的数据库,模版引擎等)提供了选择,但是如果需要,它也可以扩展到使用其他组件。

安全性

Django 帮助开发人员通过提供一个被设计为“做正确的事情”来自动保护网站的框架来避免许多常见的安全错误。例如,Django 提供了一种安全的方式来管理用户账户和密码,避免了常见的错误,比如将 session 放在 cookie 中这种易受攻击的做法(取而代之的是 cookies 只包含一个密钥,实际数据存储在数据库中)或直接存储密码而不是密码哈希。

密码哈希是通过密码散列函数发送密码而创建的固定长度值。Django 能通过运行哈希函数来检查输入的密码 – 就是 – 将输出的哈希值与存储的哈希值进行比较是否正确。然而由于功能的“单向”性质,即时存储的哈希值受到威胁,攻击者也难以解决原始密码。(但其实有彩虹表 – 译者观点)

默认情况下,Django 可以防范许多漏洞,包括 SQL 注入,跨站点脚本,跨站点请求伪造和点击劫持。

最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。

最近更新

什么是外向潜在客户开发
10-30 10:47
产品开发过程的阶段有哪些
10-30 10:47
呼叫系统开发实施做什么
10-30 10:47
开发选址如何管理团队
10-30 10:47
敏捷软件开发如何运作?
10-30 10:47
门禁系统开发厂家有哪些
10-30 10:47
系统开发图片太大如何处理
10-30 10:47
销售系统开发平台有哪些
10-30 10:47
系统开发方向是什么
10-30 10:47

立即开启你的数字化管理

用心为每一位用户提供专业的数字化解决方案及业务咨询

  • 深圳市基石协作科技有限公司
  • 地址:深圳市南山区科技中一路大族激光科技中心909室
  • 座机:400-185-5850
  • 手机:137-1379-6908
  • 邮箱:sales@cornerstone365.cn
  • 微信公众号二维码

© copyright 2019-2024. 织信INFORMAT 深圳市基石协作科技有限公司 版权所有 | 粤ICP备15078182号

前往Gitee仓库
微信公众号二维码
咨询织信数字化顾问获取最新资料
数字化咨询热线
400-185-5850
申请预约演示
立即与行业专家交流