参考文档:

Forms

The Forms API

Working with forms

一、简单的Form表达定制

1)首先我们得定制Form表单类,下面我们创建一个简单的类:

class BookForm(forms.Form):
bookname = forms.CharField(max_length=10)
publish_date = forms.DateField()

2)在视图中引用:

def book(request):
#Froms将会是一个html实例
Froms = forms.BookForm()
return render(request,"app01/book.html",{"bk":Froms})

3)我们再定制模板来接收Froms的值:

    <div class="container">
<form class="form-horizontal" action="" method="post"> {{ bk }}
<input type="submit" value="commit">
</form>
</div>

这样当我们访问指定页面时,能看定制的Form表单:

按F12,再查看代码标签,这就是Froms实例化后的html代码:

二、forms表单属性设置:

class BookForm(forms.Form):
publish_id_choice = {
(0,u'a出版社'),
(1,u'b出版社'),
}
publish_id = forms.IntegerField(widget=forms.widgets.Select(choices=publish_id_choice,attrs={'class':'form-contorl'}))
bookname = forms.CharField(max_length=10,
min_length=5,
error_messages={
'required':u'书名不能为空',
'max_length':u'不能多余10个字',
'min_length':u'不能少于5个字',
},
widget=forms.TextInput(attrs={'class':'form-contorl','palceholder':u'标题不少于5字'}))
publish_date = forms.DateField()

如上,我们可以设置最大最小长度,错误消息,自定义select,设置html标签的class属性值,生成的html源代码如下:

三、ModelForm

根据model自动生成form表单:

def bookmodel(request):
if request.method == 'GET':
Form = forms.BookModelForm()
elif request.method == 'POST':
Form = forms.BookModelForm(request.POST)
if Form.is_valid():
form_data = Form.cleaned_data
print(form_data)
Form.save()
return render(request,'app01/book.html',{"bk":Form})

生成的前端样式  , HTML 取表单数据{{ bk }} :

Form.save()方法能直接保存提交的数据到数据库。

其他方法去表单数据:

                {% for i in bk %}
{{ i.label_tag}}
{{ i }}
{% endfor %} <hr> {% for i in bk %}
{{ i.label}}
{{ i }}
{% endfor %} <hr> {% for i in bk %}
{{ i.name}}
{{ i }}
{% endfor %}

# 前端生成的html源代码:

分别对应的前端样式,可以看到i.label_tag是取对应label的整个html值,i.label是取对应的label中的text值, i.name是取i的name的值,i.errors取出错误:

Django From表单定制的更多相关文章

  1. django创建表单以及表单数据类型和属性

    08.15自我总结 关于django的表单不同关系之间的创建 一.不同关系之间的创建 1.一对一 举例 母表:userinfo id name age 1 张三 12 2 李四 58 字表:priva ...

  2. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  3. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  4. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  5. django from表单验证

    django from表单验证   实现:表单验证 工程示例: urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from djan ...

  6. django Form表单的使用

    Form django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.forms.Form ...

  7. Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)

    一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...

  8. Django form表单

    Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ...

  9. django模型表单ModelForm

    如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单.比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中.在这种情况下,写一个fo ...

随机推荐

  1. 扫描工具——Meterpreter

    Meterpreter是Metasploit框架中的一个杀手锏,通常作为利用漏洞后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给用户一个控制通道.当使用Armitage.MSFCLI或MSFCONS ...

  2. Mongo Windows 基本使用入门

    1.安装https://www.mongodb.com/download-center#community注意:安装 "install mongoDB compass" 不勾选下载 ...

  3. C#上位机中ZedGraph控件的使用

    上位机程序控制PLC模拟量通道输出周期性正弦波信号,并采集所造成改变的模拟量输入信号,并绘制数据变化曲线. 界面如图: 最后测试效果如图: 代码: using System; using System ...

  4. javascript framework vue.js

    vue.js 参考: http://cn.vuejs.org/guide/installation.html   不管使用何框架,首先都是要创建它的实例: var vue = new Vue({//参 ...

  5. C# 密封

    到目前位置所说的都是让类如何如何进行继承啊 ,重写啊,巴不得类有十多个继承,超级多的重写. 但是,今天我们来说说不允许继承和不允许重写! 这个不允许继承是包括类和方法. 这种情况好比: 爸爸有私房钱, ...

  6. xcode9 上传app后iTues 构建版本不显示

    1.问题原因 苹果公司更新了ios10系统和xcode9以后,做了许多调整,如果开发者没有注意就会遇到这样那样的问题.作者在更新以后就遇到了上传app到appstore成功后,没有显示的问题.下面就介 ...

  7. Jmeter_使用IE代理录制脚本

    因为项目登录的密码需要RSA加密,选用了jmeter作为压测工具: 就自己本次项目,顺便学习Jmeter,做一个简单的记录,本文主要介绍使用IE代理录制脚本: 自己也尝试过使用Badboy录制,还是喜 ...

  8. linux防火墙(四)—— SNET和DNET原理及应用

    图(1) 一.SNAT策略 应用环境:局域网主机共享单个公网IP地址接入Internet,简单的说就是企业内部局域网想访问外部服务器时,网关型防火墙需要开启的SNAT应用策略. SNAT策略原理:网关 ...

  9. Vue 环境配置

    最开始摸element的时候,像盲人摸象,完全没有头绪. https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials ...

  10. COCO2018 stuff分割

    stuff何许人也,相对于目标而言的环境信息,一般是图像中的草地,墙面或者天空,因为往往在一张图像中这些背景占据着大部分像素,对于场景理解必不可少,所以引入了这一任务. 不过目前这个任务还没有发布te ...