0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你如何设计Django的样式以及如何添加class

马哥Linux运维 来源:Python运维技术 作者:Python运维技术 2021-06-04 16:28 次阅读

每个使用Django的人都知道Django表单的优点。但是,当你第一次使用它时,一般会出现一个问题:我该如何设计它的样式?如何添加class?

是的,其实有一种方法(实际上很简单),就是必须使用widgets(小部件)。

什么是widgets:widgets是Django对HTML输入元素的表示。widgets处理HTML的呈现,并从与widgets相对应的GET / POST字典中提取数据。

换句话说,widgets只是定义如何将内容呈现为HTML的一种方法。因此,例如,CharField具有默认的TextInput小部件,该小部件呈现为《input type =“ text”》。

但是小部件是可自定义的,因此还可以设置诸如文本区域的大小之类的内容,或者该字段是否将成为必填字段等等。

因此,让我们尝试构建一个示例来展示实际使用的小部件。

假设我们有一个名为UserInfoForm的表单来获取用户名以及他的电子邮件。

from django import formsclass UserInfoForm(forms.Form): name = forms.CharField() email = forms.EmailField()

HTML看起来像这样:

《div class=“container”》《h1》Form《/h1》《form action=“{% url ‘index’ %}” method=“post”》 {% csrf_token %}《div class=“form-group”》 {{ form }}《/div》《div class=“form-group”》《input class=“btn btn-success” type=“submit” value=“Submit”》《/div》《/form》《/div》

目前,此表单使用默认的窗口小部件,并且没有任何样式,因此基本上,它看起来像这样:

65119434-c482-11eb-9e57-12bb97331649.png

看着还可以,但是它仍然可以改进,我们可以向其中添加一个Bootstrap类。我们可以通过在attrs字典中声明一个类来做到这一点。

from django import formsfrom django.forms import TextInput, EmailInputclass UserInfoForm(forms.Form): name = forms.CharField(widget=forms.TextInput(attrs={‘placeholder’: ‘Name’, ‘style’: ‘width: 300px;’, ‘class’: ‘form-control’) email = forms.EmailField(widget=forms.EmailInput(attrs={‘placeholder’ :‘Email’, ‘style’: ‘width: 300px;’, ‘class’: ‘form-control’)

我们添加了一个Bootstrap类,然后看结果:

652d0bb0-c482-11eb-9e57-12bb97331649.png

但是通常当我们使用Django表单时,这些表单与某种模型相关,而现在这种表单却没有。为此,我们需要进行一些更改。我们现在将使用小部件类。窗口小部件类具有基本的属性attrs,就像上面的示例一样。我们还必须添加一个名为Meta的新类,并指定与该表单相关的模型的名称,我们要拥有的字段以及这些字段的小部件。

from django import formsfrom django.forms import ModelForm, TextInput, EmailInputfrom .models import Userclass UserInfoForm(ModelForm):class Meta: model = User fields = [‘name’, ‘email’] widgets = {‘name’: TextInput(attrs={‘class’: “form-control”,‘style’: ‘max-width: 300px;’,‘placeholder’: ‘Name’ }),‘email’: EmailInput(attrs={‘class’: “form-control”, ‘style’: ‘max-width: 300px;’,‘placeholder’: ‘Email’ }) }

那么这是怎么回事?我们之前使用的CharField和EmailField是内建字段类,但是如果要使用widgets类,则需要使用内建控件,在此示例中,这些控件是TextInput和EmailInput。最终它们将工作相同,但配置会略有不同。

该表单基本上与以前的表单相同,它没有改变其呈现方式或其他任何方式,但现在此表单已连接到User模型,该模型是用于存储用户信息的模型。 HTML看起来像这样:

《div class=“container”》《h1》Form《/h1》《form action=“{% url ‘index’ %}” method=“post”》 {% csrf_token %}《div class=“form-group”》 {{ form.name }}《/div》《div class=“form-group”》 {{ form.email }}《/div》《div class=“form-group”》《input class=“btn btn-primary” type=“submit” value=“Submit”》《/div》《/form》《/div》

最后结果:

6550c4b0-c482-11eb-9e57-12bb97331649.png

写在最后: 学习如何使用窗口小部件非常有用,因为现在你知道如何使这些表单看起来更好,并且添加Bootstrap类非常简单,这很方便。

文章转载:Python运维技术

(版权归原作者所有,侵删)

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HTML
    +关注

    关注

    0

    文章

    278

    浏览量

    35898
  • Django
    +关注

    关注

    0

    文章

    44

    浏览量

    10397

原文标题:教你如何为Django表单设置样式?

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    技术升级:探索华为云 EulerOS 与 Flexus X 实例如何完美融合快速部署 Django

    ,我们将目光聚焦于华为云 EulerOS 操作系统与 Flexus X 实例的深度融合,探讨如何在这一强大组合下实现 Django 服务的快速部署。本文将带你领略华为云的技术魅力,解锁高效部署新姿势,助力你的业务飞速发展。 什么是 Django
    的头像 发表于 12-25 17:50 193次阅读
    技术升级:探索华为云 EulerOS 与 Flexus X 实例如何完美融合快速部署 <b class='flag-5'>Django</b>

    怎么集齐7个云平台?本文教你!

    每家云平台都有自己的协议,工程师要移植不同的SDK代码或基于各家的手册文档对接不同的协议,看着都头大,该如何集齐7个云平台?本文教你!本文将以Air780E+LuatOS作为示例,教你使用IoT_CLOUD连接Tlink云平台。
    的头像 发表于 12-02 14:41 512次阅读
    怎么集齐7个云平台?本文<b class='flag-5'>教你</b>!

    Java代码之美,从遵循样式规范开始

    至关重要。本文将带你探索Java代码的美学,揭示那些能够让你的代码既美观又高效的样式规范。无论是初出茅庐的新手还是经验丰富的老手,都能从中获得灵感,提升编码的艺术。 一、为什么要代码样式规范 对于团队开发,不同的代码规范或不
    的头像 发表于 11-27 11:42 230次阅读
    Java代码之美,从遵循<b class='flag-5'>样式</b>规范开始

    请问class D类运放不好用作驱动headphone的原因有哪些?

    请问class D类运放不好用作驱动headphone的原因除了EMI问题,还有没有其它问题的限制,导致TI没有生产class D的headphone功
    发表于 11-04 08:06

    TLV320AIC3111 CLASS D静音播放是什么意思?

    之前提问的问题的解答中,提到静音播放时,CLASS D的输出P和M的同频同相的输出是正确的,请问这个静音播放是什么意思?我现在在有数字输入的情况下,仍然是同频同相且占空比相同的方波,是正常的吗?
    发表于 09-30 06:43

    双轴测径仪的四种样式

    仪设计了四种外观样式。 45°角布置的开口测径仪 这个样式的双轴测径仪是目前大部分产线所使用的,样式简单大气。用于外径及椭圆度尺寸的检测。 45°角布置的闭口测径仪 该样式的双轴测径仪
    发表于 08-27 17:42

    Bourns 推出符合 IEC Class I 和 Class II 标准的 AC 浪涌保护器

    电源、保护和传感解决方案电子组件领导制造供货商,全新推出 1270 和 1280 系列双导轨 AC 浪涌保护器 (SPD)。该款 SPD 系列符合 IEC/EN 61643-11 标准 Class I
    发表于 08-20 15:08 436次阅读
    Bourns 推出符合 IEC <b class='flag-5'>Class</b> I 和 <b class='flag-5'>Class</b> II 标准的 AC 浪涌保护器

    abb机器人系统如何添加选项

    ABB机器人系统是一种广泛应用于工业生产领域的自动化设备。在实际应用中,用户可能需要对机器人系统进行一些配置和设置,以满足特定的生产需求。本文将详细介绍如何在ABB机器人系统中添加选项,包括添加
    的头像 发表于 06-17 09:43 2417次阅读

    鸿蒙ArkTS声明式开发:跨平台支持列表【多态样式】 通用属性

    设置组件不同状态的样式。 从API version 9开始,该接口支持在ArkTS卡片中使用。
    的头像 发表于 06-07 09:48 429次阅读
    鸿蒙ArkTS声明式开发:跨平台支持列表【多态<b class='flag-5'>样式</b>】 通用属性

    手把手教你排序算法怎么写

    今天以直接插入排序算法,给大家分享一下排序算法的实现思路,主要包含以下部分内容:插入排序介绍插入排序算法实现手把手教你排序算法怎么写在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将
    的头像 发表于 06-04 08:03 725次阅读
    手把手<b class='flag-5'>教你</b>排序算法怎么写

    HSW-EUA2318 Ver0 15-W Stereo Class-D Audio Power

    EUA2318XIR1DESCRIPTIONThe EUA2318 is a high efficiency, 2 channel bridged-tiedload (BTL), class
    发表于 05-31 15:38 0次下载

    stm32CubeMX怎么添加中断以及相应的代码或者.c和.h文件?

    我想咨询一下,用stm32CubeMX生成的工程里边 怎么添加中断以及相应的代码或者.c和.h文件。我跑的是freertos系统,能不能在stm32CubeMX里边直接添加啊。
    发表于 04-29 08:17

    Linux添加磁盘创建分区、挂载

    Linux添加磁盘创建分区、挂载
    发表于 04-20 17:49 529次阅读
    Linux<b class='flag-5'>添加</b>磁盘创建分区、挂载

    谷景教你如何测量大电流功率电感好坏

    谷景教你如何测量大电流功率电感好坏 编辑:谷景电子 在众多电感产品中,大电流功率电感是应用比较多中的一种电子元器件。要想大电流功率电感在电路中充分发挥它的功能以及作用,那么一定要保证它选型的正确性
    的头像 发表于 02-22 09:21 391次阅读

    CLASS-AB类音频功率放大器产品选型指南

    CLASS-AB类音频功率放大器产品选型指南
    的头像 发表于 02-05 17:53 2775次阅读
    <b class='flag-5'>CLASS</b>-AB类音频功率放大器产品选型指南