Django 美化使用ModelForm的输入框

在初次使用ModelForm时,我的html文件代码如下,主要内容是显示一个卡片式表单,通过循环遍历 form 对象动态生成表单字段

html 复制代码
{% extends 'layout.html' %}

{% block content %}
<div class="container">
    <div class="c1">
        <a class="btn btn-success" href="/user/add">新建用户</a>
    </div>

    <div class="c1">
        <a class="btn btn-success" href="/user/model/form/add">新建用户ModelForm</a>
    </div>

    <div class="card c1">
        <div class="card-header">
            新建用户
        </div>
        <div class="card-body">
            <form method="post">
                {% csrf_token %}
                {% for field in form%}
                <div class="form-label">
                    <label>{{ field.label }}</label>
                    {{ field }}
                </div>
                {% endfor %}

                <button type="submit" class="btn btn-primary">提交</button>
            </form>

        </div>

    </div>

</div>
{% endblock %}

实现效果

但看着效果不太美观,通过增加下面的代码,来让ModelForm的使用更加的美观好看

python 复制代码
def __init__(self, *args, **kwargs):
    # 调用父类的初始化方法
    super().__init__(*args, **kwargs)

    # 遍历表单中的所有字段
    for name, field in self.fields.items():
        # 为每个字段的 widget 添加 HTML 属性
        field.widget.attrs = {
            "class": "form-control",  # 添加 Bootstrap 样式
            "placeholder": field.label  # 设置占位符为字段的标签
        }

代码功能

  1. 动态设置表单字段的 HTML 属性

    • 遍历表单中的所有字段(self.fields.items())。

    • 为每个字段的 widget.attrs 添加 classplaceholder 属性。

  2. 添加 Bootstrap 样式

    • 为每个字段的 HTML 输入元素添加 class="form-control",使其符合 Bootstrap 的表单样式。
  3. 设置占位符文本

    • 将字段的 label 作为 placeholder 属性值,显示在输入框中作为提示文本。

这段代码通过重写 init 方法,动态为表单字段添加 HTML 属性和样式,提升了表单的可用性和美观性。它特别适合与 Bootstrap 等前端框架结合使用,同时减少了模板中的重复代码。

相关推荐
2301_822366354 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
小郎君。4 小时前
【无标题】
python
喵手4 小时前
Python爬虫实战:数据治理实战 - 基于规则与模糊匹配的店铺/公司名实体消歧(附CSV导出 + SQLite持久化存储)!
爬虫·python·数据治理·爬虫实战·零基础python爬虫教学·规则与模糊匹配·店铺公司名实体消岐
喵手4 小时前
Python爬虫实战:国际电影节入围名单采集与智能分析系统:从数据抓取到获奖预测(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集国际电影节入围名单·从数据抓取到获奖预测
派葛穆5 小时前
Python-PyQt5 安装与配置教程
开发语言·python·qt
万邦科技Lafite5 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
自可乐5 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
可触的未来,发芽的智生5 小时前
发现:认知的普适节律 发现思维的8次迭代量子
javascript·python·神经网络·程序人生·自然语言处理
weixin_307779135 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
盒马coding5 小时前
深度解密MySQL2PG工具MySQL至PostgreSQL语法全景拆解过程
数据库·mysql·postgresql