Django 拥有自己独立的表单功能块,可以完成:

  1、表单的定义

  2、表单的校验

  3、表单的前端样式

等功能,方便我们开发,那么接下来,我们看一下表单的定义

首先我们确定我们要编写的功能,一个提供给博客的访客发送自己的联系方式的功能。并且搭建相对应的数据库

 from django.db import models

 class Connection(models.Model):
con_name = models.CharField(max_length = 32,verbose_name = "联系人姓名")
con_phone = models.CharField(max_length=32, verbose_name="联系人姓名")
con_email = models.EmailField(verbose_name="联系人姓名") def __str__(self):
return "%s : %s"%(self.con_name,self.con_email)

表单的定义

  form表单的定义通过Django下面的form类进行定义,过程和Django的模型定义类似,首先在app目录当中创建form定义的专属文件form.py,然后开始我们的编写。

  常用的表单定义方法有两种:

  1、  常规定义,我们按照与model模型定义类似的定义方法定义表单

 #coding:utf-8
from django import forms class ConnectionForm(forms.Form):
con_name = forms.CharField(max_length = 32,label = "联系人姓名")
con_phone = forms.CharField(max_length=32, label="联系人姓名")
con_email = forms.EmailField(label="联系人姓名")

  这样我们就定义了一个表单,这个表单和上面讲课用的联系人表单的效果是一模一样的。当然惯用form字段里面常用的字段和对应的参数,也给大家列出             来:

常用的字段

1、charfield  对应单行输入框

2、booleanfield  对应checkbox选择框

3、choicefield 对应下拉菜单选择框   重要参数choice

4、datafield  对应一个单行输入框,但是会自动转化为日期类型

5、emailfield  对应输入框,自动验证是否是邮件地址

6、filefield  对应文件上传选项

7、filepathfiled 对应一个(文件组成的下拉菜单)选择,必须参数path=''.选项为这个地址里边所有的文件。可选参数recursive=True是否包含子文件夹里的文件

8、imagefield  图片上传按钮。需要pillow模块

9、urlfield  对应输入框 自动验证是否为网址格式

字段常用的参数

1、rqeuired    字段是否为必填 默认为True

2、label  类似于输入框前边的提示信息

3、initial 初始值(占位符)就是给出一个默认值

4、help_text  字段的辅助描述

5、error_message={}  覆盖{{form.name.error}}信息

6、disable  字段是否可以修改

7、widget 负责渲染网页上HTML表单的输入元素和提取提交的原始数据。

8、max_length 最大长度

9、min_length 最小长度

2、对应Django模型定义

为了保证我们定义的表单模型和数据库提交模型的一致性,我们可以通过Form表单类当中嵌套元类Meta来实现通过模型快速的定义表单

 #coding:utf-8
from django import forms
from Article.models import Connection #首先导入要对接的数据库
class ConnectionForm(forms.ModelForm): #注意,我们现在继承的是ModelForm而不是Forms
class Meta: #这是一个元类
model = Connection #指定models对应的模型
fields = ["con_name","con_phone","con_email"] #指定显示的字段

    当然,这么简单的代码只能完成最简单的效果,我们还需要一些常用的参数

1、fields 要展示的字段,接收的是一个列表,如果不写默认是models的所有字段

     2、exclude 不要展示的字段,接收的是一个列表,排除的字段,默认没有

     3、widgets 是一个模型字段的名称对应的样式的字典

     4、labels 是一个模型字段的名称对应的标签的字典

     5、help_texts 是一个模型字段的名称对应的帮助文档的字典

     6、error_messages是一个模型字段的名称对应的错误提示的字典

  这种写法使用的比较少,举一个例子来看看对应Django模型定义表单的参数使用

 #coding:utf-8
from django import forms
from Article.models import Connection #首先导入要对接的数据库
class ConnectionForm(forms.ModelForm): #注意,我们现在继承的是ModelForm而不是Forms
class Meta: #这是一个元类
model = Connection #指定models对应的模型
fields = ["con_name","con_phone","con_email"] #指定显示的字段
widgets = {
"con_name": forms.TextInput(attrs = {"style":"font-size:20px;"}),
"con_phone": forms.TextInput(attrs={"style": "font-size:20px;"}),
"con_email": forms.TextInput(attrs={"style": "font-size:20px;"})
} #指定对应标签的样式

python django Form表单的更多相关文章

  1. django form表单验证

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

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

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

  3. Django form表单 组件

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

  4. Django学习笔记之Django Form表单详解

    知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ...

  5. django Form表单的使用

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

  6. Django form表单

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

  7. Django Form表单组件

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

  8. django Form 表单 总结与小实例

    开头寄语: 这几天一直在看Django的form表单验证,然后想对于这几天要有个总结. 首先,先来看一下找到的一个form表单验证的流程: 验证过程 流程详解1. 函数full_clean()依次调用 ...

  9. Django Form表单学习总结

    Form中添加自定义的验证:    1.对特定字段属性的验证;    2.包含多字段的验证. 先创建一个简单的Form: from django import forms class ContactF ...

随机推荐

  1. Navigation源码(一) move_base最全解析

    一.概述 目测是全网最全的解析,花了几个小时通读并整理的,供大家参考学习. 概况的话可以看下古月居 https://www.guyuehome.com/270,其实它是翻译官方的,英语ok的可以去ro ...

  2. 安装mysql过程中的异常解决

      [root@cdh1 ruanjian]# rpm -ivh mysql-community-common-5.7.10-1.el6.x86_64.rpm  warning: mysql-comm ...

  3. SpringBoot图文教程3—「‘初恋’情结」集成Jsp

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...

  4. ng-repeat 设定select 选择项

    <select class="form-control m-b" name="FPermissionID" ng-model="mgfunc.F ...

  5. nmap 速查命令

    进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测) nmap -sP 192.168.1.0/24 仅列出指定网络上的每台主机,不发送任何报文到目标主机 nam ...

  6. 洛谷 P5242 [USACO19FEB]Cow Dating P

    这道题很有意思. 不难发现,对于一个区间 \([l, r]\),恰好只有一个奶牛接受邀请的概率为 \[\prod_{i=l}^r(1-p_i) \cdot \sum_{i=l}^r \frac {p_ ...

  7. 概率图模型(PGM,Probabilistic Graphical Model)

    PGM是现代信号处理(尤其是机器学习)的重要内容. PGM通过图的方式,将多个随机变量之前的关系通过简洁的方式表现出来.因此PGM包括图论和概率论的相关内容. PGM理论研究并解决三个问题: 1)表示 ...

  8. 在webView中除去广告

    首先建一个ADFilterTool.java类 代码如下 import android.content.Context; import android.content.res.Resources; p ...

  9. Android中利用正则表达式验证手机号是否合法

    利用正则表达式来验证手机号是否合法,现在我们简单使用一下,这个在实际的应用中很实用. 例:在输入框中输入手机号,判断是否合法, MainActivity中: package com.example.m ...

  10. Java的clone方法效率问题

    在Java中,经常会需要新建一个对象,很多情况下,需要这个新建的对象和现有的某个对象保持属性一致. 那么,就有两种方式来实现这个对象的构造: ①通过新建一个对象,为这个对象的属性根据原有对象的属性来进 ...