核心问题

如何将工作流页面重构为与文章详情页一致的Bootstrap网格布局和列表卡片结构?


## 背景 在 `d-django-circler` 项目中,`article.html` 作为文章详情页模板已经形成了一套清晰的视觉风格:左侧主内容区占 8 列,右侧边栏占 4 列,文章列表采用垂直排列的卡片结构,卡片内部包含标题、元数据、正文摘要和操作链接。而 `workflow.html` 工作流列表页则使用了网格布局,列宽比例为 9:3,整体感受与文章页不统一。为了提升用户体验并降低维护成本,决定将 `workflow.html` 重构为与 `article.html` 相同的结构风格。 ## 布局调整:统一列宽比例 第一步是修改 Bootstrap 栅格类,使左右两栏的宽度与 `article.html` 完全一致。 - 原结构:左侧 `col-lg-9`,右侧 `col-lg-3` - 新结构:左侧 `col-lg-8`,右侧 `col-lg-4` 这样调整后,工作流页面与文章页在整体版面上形成统一,左侧内容区域略微收窄,右侧边栏变宽,适合放置分类筛选或其他辅助信息。 ```django
...
...
...
...
``` ## 列表结构改造:从网格到垂直列表 原先的工作流列表使用了名为 `workflow_grid` 的容器,很可能通过 CSS Grid 或 `row` + `col` 实现了多列卡片网格。而文章页采用的是 `article_list_section` 包裹的垂直列表,每行仅显示一个卡片,突出条目细节。 我们将 `workflow_grid` 替换为 `workflow_list_section`,并移除网格相关样式,让所有工作流条目自上而下依次排列。这样不仅与文章页保持风格一致,也让用户能够更专注地阅读每个工作流的描述信息。 ```django
{% for workflow in workflows %}
...
{% endfor %}
{% for workflow in workflows %}
...
{% endfor %}
``` ## 卡片结构重构:三层语义化结构 卡片是整个列表的核心元素。文章页的卡片使用了 `
` 标签,并分为 `article_card_header`、`article_card_body` 和 `article_card_footer` 三层结构。为了完全对齐,工作流卡片也采用同样的三层结构,并对应命名。 ### 卡片头部(workflow_card_header) 放置工作流标题(`

` 或 `

`)以及元数据,如创建时间和浏览量。例如: ```django

{{ workflow.title }}

{{ workflow.created_at|date:"Y-m-d" }} {{ workflow.views }} 次浏览
``` ### 卡片主体(workflow_card_body) 显示缩略图和描述摘要。描述长度从原来的 64 字符增加到 140 字符,以便用户获取更多信息。 ```django
{{ workflow.title }}

{{ workflow.description|truncatechars:140 }}

``` ### 卡片尾部(workflow_card_footer) 包含分类标签和“查看详情”链接,与文章页的操作入口保持一致。 ```django ``` ## 内容展示优化 除了结构调整,还微调了描述文字的截断长度。原先 `truncatechars:64` 可能不够展示工作流的关键步骤,现在改为 140 字符,既保留了简洁性,又提供了更充分的上下文。 ## 保持功能完全不变 整个重构过程中,所有后端传递的变量、链接地址、视图逻辑以及条件判断均未做任何修改。你原有的数据绑定、分页、权限控制等功能仍然原封不动地生效。本次修改纯粹是 HTML/CSS 类名和结构的替换,属于“无侵入式”的风格统一。 ## 总结 通过以上四个步骤,`workflow.html` 成功复用了 `article.html` 的设计语言: 1. 使用相同的 Bootstrap 列宽比例(`col-lg-8` + `col-lg-4`)。 2. 将网格布局改为垂直列表布局,类名从 `workflow_grid` 变为 `workflow_list_section`。 3. 卡片内部采用 `
` + 三层结构化(header / body / footer)。 4. 保留所有原有功能,仅调整样式和结构。 这种重构方法不仅适用于本次工作流页面,也适用于项目中其他需要统一风格的列表页面,有助于提升整体设计的一致性和可维护性。