zoukankan      html  css  js  c++  java
  • python django Form表单

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

      1、表单的定义

      2、表单的校验

      3、表单的前端样式

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

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

    1 from django.db import models
    2 
    3 class Connection(models.Model):
    4     con_name = models.CharField(max_length = 32,verbose_name = "联系人姓名")
    5     con_phone = models.CharField(max_length=32, verbose_name="联系人姓名")
    6     con_email = models.EmailField(verbose_name="联系人姓名")
    7 
    8     def __str__(self):
    9         return "%s : %s"%(self.con_name,self.con_email)

    表单的定义

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

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

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

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

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

           常用的字段

                  1charfield  对应单行输入框

                  2booleanfield  对应checkbox选择框

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

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

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

                  6filefield  对应文件上传选项

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

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

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

           字段常用的参数

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

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

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

                  4help_text  字段的辅助描述

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

                  6disable  字段是否可以修改 

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

                  8max_length 最大长度

                  9min_length 最小长度

            2、对应Django模型定义

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

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

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

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

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

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

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

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

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

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

     1 #coding:utf-8
     2 from django import forms
     3 from Article.models import Connection #首先导入要对接的数据库
     4 class ConnectionForm(forms.ModelForm): #注意,我们现在继承的是ModelForm而不是Forms
     5     class Meta: #这是一个元类
     6         model = Connection #指定models对应的模型
     7         fields = ["con_name","con_phone","con_email"] #指定显示的字段
     8         widgets = {
     9             "con_name": forms.TextInput(attrs = {"style":"font-size:20px;"}),
    10             "con_phone": forms.TextInput(attrs={"style": "font-size:20px;"}),
    11             "con_email": forms.TextInput(attrs={"style": "font-size:20px;"})
    12         } #指定对应标签的样式
  • 相关阅读:
    函数响应式编程
    RxSwift
    Swift 5.1 新语法
    MVVM
    SwiftUI 九
    SwiftUI 八
    SwiftUI制作View可嵌套组件
    Swift 5.1 新语法
    MVVM
    Linux系统修改hostname,不用重启
  • 原文地址:https://www.cnblogs.com/bianjinhui/p/9795117.html
Copyright © 2011-2022 走看看