Python Django中利用OrderedDict格式化并展示用户信息

小满
小满
发布时间:2026-10-12| 2人浏览过
原创

本文介绍如何在Django项目中通过重写__str__方法生成特定格式字符串,并在视图中利用OrderedDict将其解析为有序字典。通过列表推导式提取键值对,最终在HTML模板中以表格形式直观展示用户信息,确保字段顺序与数据库模型定义一致。

核心实现思路

在Django开发中,有时需要以特定的顺序展示模型字段。为了实现这一点,可以通过以下步骤完成:

  1. 在模型中重写 __str__ 方法,生成包含字段名和值的格式化字符串。
  2. 在视图中将该字符串分割,并利用 collections.OrderedDict 保持键值对的顺序。
  3. 在HTML模板中遍历该有序字典,渲染为表格。

模型层:定义输出格式

首先,在 models.py 中定义用户信息模型。通过重写 __str__ 方法,我们可以控制对象转换为字符串时的格式。这里采用“键 值”交替排列的方式,不使用额外的分隔符,仅以空格分割。

def __str__(self):
    return "email {0} idcard {1} adress {2} phonenumber {3}".format(
      self.email, self.idcard, self.adress, self.phonenumber
    )

视图层:解析与处理

在 views.py 中,我们需要获取用户信息并将其转换为有序字典。具体步骤如下:

  1. 使用 @login_required 装饰器确保只有登录用户可访问。
  2. 查询当前用户的信息对象。
  3. 将每个对象的字符串表示按空格分割,提取键和值。
  4. 利用 zip 函数将键和值配对,并传入 OrderedDict 以保持顺序。
from collections import OrderedDict as ordic

@login_required
def msg(request):
  msg = UserMsg.objects.filter(whoami=request.user)
  
  for item in msg:
    msglist = str(item).split(" ")

  msgkey = msglist[::2]
  msgvalue = msglist[1::2]
  msgs = ordic(zip(msgkey,msgvalue))
  context = {'msg':msgs}

  return render(request, 'usermsg/msg.html', context)

上述代码中,msglist[::2] 提取所有键(偶数索引),msglist[1::2] 提取所有值(奇数索引)。通过 zip 将键值对组合,并初始化为 OrderedDict,确保后续遍历顺序与定义一致。

列表推导式辅助验证

在调试过程中,可以使用列表推导式快速查看分割后的结果:

>>[str(i).split() for i in msg][0]
>>>['email', 'xxxxxx@163.com', 'idcard', '12', 'adress', '13', 'phonenumber', '14']

模板层:表格展示

最后,在 msg.html 模板中,遍历传入的有序字典 msg,将每个键值对渲染为表格行。同时,为每个字段添加一个“修改”链接。

<table border="0">
  {% for key,value in msg.items %}
  <br>
  <tr>
    <td> {{key}} </td>
    <td> :{{ value }} </td>
    <td> <a href="#" rel="external nofollow" value="change{{ key }}"> 修改{{ key }}
</a> </td>
  </tr>
 {% endfor %}
</table>

通过 {{key}} 和 {{ value }} 分别显示字段名和值,并在最后一列添加修改链接。由于使用了 OrderedDict,表格列的顺序将与模型中定义的顺序一致。

总结

本文展示了如何在Django中利用 OrderedDict 保持用户信息的展示顺序。通过模型层格式化字符串、视图层解析为有序字典、模板层表格渲染,实现了结构清晰且顺序可控的用户信息展示。以上就是使用Python实现生成用户信息的详细内容,更多关于Python Django模板渲染的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。