通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

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

管理后台由网站的管理员负责查看、添加、修改、删除数据,为此,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 注入,跨站点脚本,跨站点请求伪造和点击劫持。

相关文章