Django模板样式优化求助:导航栏、按钮及表单边框设置
问题:Django表单追踪应用样式修改需求
我用Django开发了FORM TRACKING APP,页面连接SQL Server,展示Live、Report、Planning、Old四类表单,功能正常。已实现登录用户名显示及退出链接,现在需要完成三个样式修改:
- 创建固定导航栏,中间显示页面名称,右侧显示带头像的用户名及退出链接
- 将“+ Add Form”链接替换为按钮
- 为四类表单添加边框
现有代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Homepage</title> </head> <body> <h1><b><center><u>FORM TRACKING APP</u></center></b></h1> {% if user.is_authenticated %} <div class="topright">User: Hi {{ user.get_username }} !! <br><a href="{% url 'logout' %}?next={{ request.path }}">Logout</a><br></div> {% endif %} <!DOCTYPE html> <style> .topright { position: absolute; top: 8px; right: 16px; font-size: 18px; } .blue-bg { background-color: rgb(0, 174, 255); } .head-button-size { height: 66px; width: 100px; border-radius: 10px; } .head-material { color: #FFFFFF; font-size: 50px; } .head-mini-text { color: #fff; font-family: 'Arial Narrow', 'Helvetica Neue', 'Arial'; font-size: 12px; } .tooltip-text { visibility: hidden; position: absolute; z-index: 1; width: 100px; color: white; background-color: #192733; padding: 5px; } .addform{ float: right; color :rgb(0, 174, 255); text-decoration-color: aqua; text-emphasis: True; font-size: larger; } </style> <html> <a href="{% url 'add' %}" class="addform">+ Add Form</a> <h2>Live</h2> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_live %} <td style="height:66px;"> <button class="head-button-size blue-bg" ui-sref="start"> <div style="text-align:center"> <md-icon class="material-icons head-material">domain</md-icon> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}">{{ form.form_version_nm }} - {{ form.form_version_cd }}</a> </div> </button> </td> {% else %} <!--<p> No forms to display in this category</p>--> {% endif %} {% endfor %} {% else %} <p> No forms to display</p> {% endif %} </tr> </table> <h2>Report</h2> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_formfreeze %} <td style="height:66px;"> <button class="head-button-size blue-bg" ui-sref="start"> <div style="text-align:center"> <md-icon class="material-icons head-material">domain</md-icon> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}">{{ form.form_version_nm }} - {{ form.form_version_cd }}</a> </div> </button> </td> {% else %} <!-- <p> No forms in this category </p> --> {% endif %} {% endfor %} {% else %} <p> No forms to display</p> {% endif %} </tr> </table> <h2>Planning</h2> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_planning_formdev %} <td style="height:66px;"> <button class="head-button-size blue-bg" ui-sref="start"> <div style="text-align:center"> <md-icon class="material-icons head-material">domain</md-icon> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}">{{ form.form_version_nm }} - {{ form.form_version_cd }}</a> </div> </button> </td> {% else %} <!-- <p> No forms in this category </p> --> {% endif %} {% endfor %} {% else %} <p> No forms to display</p> {% endif %} </tr> </table> <h2>Old</h2> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_retired %} <td style="height:66px;"> <button class="head-button-size blue-bg" ui-sref="start"> <div style="text-align:center"> <md-icon class="material-icons head-material">domain</md-icon> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}">{{ form.form_version_nm }} - {{ form.form_version_cd }}</a> </div> </button> </td> {% else %} <!-- <p> No forms in this category </p> --> {% endif %} {% endfor %} {% else %} <p> No forms to display</p> {% endif %} </tr> </table> </html> </body> </html>
修改后的完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Homepage</title> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <style> /* 全局样式重置 */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: Arial, sans-serif; } /* 固定导航栏样式 */ .navbar { position: fixed; top: 0; width: 100%; background-color: #f8f9fa; border-bottom: 1px solid #dee2e6; padding: 0.75rem 1rem; display: flex; align-items: center; justify-content: space-between; z-index: 1000; } .navbar-title { font-size: 1.25rem; font-weight: bold; color: #343a40; } .user-section { display: flex; align-items: center; gap: 1rem; } .user-avatar { width: 36px; height: 36px; border-radius: 50%; background-color: #00aeff; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; } .logout-link { text-decoration: none; color: #00aeff; padding: 0.25rem 0.5rem; border-radius: 4px; transition: background-color 0.2s; } .logout-link:hover { background-color: #e3f2fd; } /* 主内容区域,避开固定导航栏 */ .main-content { margin-top: 70px; padding: 1rem; } /* Add Form 按钮样式 */ .add-form-btn { float: right; background-color: #00aeff; color: white; border: none; padding: 0.5rem 1rem; border-radius: 6px; font-size: 1rem; cursor: pointer; transition: background-color 0.2s; text-decoration: none; display: inline-block; } .add-form-btn:hover { background-color: #0096d6; } /* 表单分类容器样式,带边框 */ .form-category { margin: 2rem 0; padding: 1rem; border: 1px solid #dee2e6; border-radius: 8px; background-color: #ffffff; } .form-category h2 { margin-bottom: 1rem; color: #343a40; border-bottom: 1px solid #dee2e6; padding-bottom: 0.5rem; } /* 原有按钮样式保留并优化 */ .blue-bg { background-color: rgb(0, 174, 255); } .head-button-size { height: 66px; width: 100px; border-radius: 10px; border: none; cursor: pointer; transition: background-color 0.2s; } .head-button-size:hover { background-color: #0096d6; } .head-material { color: #FFFFFF; font-size: 50px; } .head-mini-text { color: #fff; font-family: 'Arial Narrow', 'Helvetica Neue', 'Arial'; font-size: 12px; text-decoration: none; } .tooltip-text { visibility: hidden; position: absolute; z-index: 1; width: 100px; color: white; background-color: #192733; padding: 5px; } </style> </head> <body> <!-- 固定导航栏 --> <nav class="navbar"> <div></div> <div class="navbar-title">FORM TRACKING APP</div> {% if user.is_authenticated %} <div class="user-section"> <div class="user-avatar">{{ user.get_username|first|upper }}</div> <span>Hi {{ user.get_username }}!!</span> <a href="{% url 'logout' %}?next={{ request.path }}" class="logout-link">Logout</a> </div> {% endif %} </nav> <!-- 主内容区域 --> <div class="main-content"> <!-- Add Form 按钮 --> <a href="{% url 'add' %}" class="add-form-btn">+ Add Form</a> <!-- Live 表单分类 --> <div class="form-category"> <h2>Live</h2> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_live %} <td style="height:66px; padding: 0.5rem;"> <button class="head-button-size blue-bg"> <div style="text-align:center"> <span class="material-icons head-material">domain</span> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}"> {{ form.form_version_nm }} - {{ form.form_version_cd }} </a> </div> </button> </td> {% endif %} {% endfor %} {% else %} <td><p>No forms to display</p></td> {% endif %} </tr> </table> </div> <!-- Report 表单分类 --> <div class="form-category"> <h2>Report</h2> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_formfreeze %} <td style="height:66px; padding: 0.5rem;"> <button class="head-button-size blue-bg"> <div style="text-align:center"> <span class="material-icons head-material">domain</span> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}"> {{ form.form_version_nm }} - {{ form.form_version_cd }} </a> </div> </button> </td> {% endif %} {% endfor %} {% else %} <td><p>No forms to display</p></td> {% endif %} </tr> </table> </div> <!-- Planning 表单分类 --> <div class="form-category"> <h2>Planning</h2> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_planning_formdev %} <td style="height:66px; padding: 0.5rem;"> <button class="head-button-size blue-bg"> <div style="text-align:center"> <span class="material-icons head-material">domain</span> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}"> {{ form.form_version_nm }} - {{ form.form_version_cd }} </a> </div> </button> </td> {% endif %} {% endfor %} {% else %} <td><p>No forms to display</p></td> {% endif %} </tr> </table> </div> <!-- Old 表单分类 --> <div class="form-category"> <h2>Old</h2> <table> <tr> {% if formversion_list %} {% for form in formversion_list %} {% if form.get_retired %} <td style="height:66px; padding: 0.5rem;"> <button class="head-button-size blue-bg"> <div style="text-align:center"> <span class="material-icons head-material">domain</span> <br> <a class="head-mini-text" href="{% url 'form-detail' form.form_version_id %}"> {{ form.form_version_nm }} - {{ form.form_version_cd }} </a> </div> </button> </td> {% endif %} {% endfor %} {% else %} <td><p>No forms to display</p></td> {% endif %} </tr> </table> </div> </div> </body> </html>
关键修改说明
1. 固定导航栏实现
- 创建
.navbar类,设置position: fixed固定在页面顶部,用flex布局实现标题居中、用户区域居右的排列 - 用户区域包含:用用户名首字母生成的圆形头像、用户名文本、带hover效果的退出链接
- 添加
.main-content类,设置margin-top避开导航栏,防止内容被遮挡
2. 替换Add Form为按钮
- 将原
<a>标签改为带.add-form-btn类的链接按钮,设置背景色、圆角、hover效果,保留原有跳转功能
3. 为四类表单添加边框
- 为每个表单分类创建
.form-category容器,添加边框、内边距、圆角,同时优化标题的底部分隔线样式 - 调整表格单元格的内边距,提升整体排版美观度
额外修复了原代码的问题:
- 移除重复的
<html>和<link>标签 - 将
md-icon替换为标准的<span class="material-icons">标签 - 添加全局样式重置,消除默认边距的影响
- 为原有表单
相关产品推荐
相关产品推荐

