Django From表单定制

参考文档:

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取出错误:

时间: 2024-08-28 07:29:24

Django From表单定制的相关文章

Django Form表单

Django  Form 表单 在实际的生产环境中比如登录和验证的时候,我们一般都使用Jquery+ajax来判断用户的输入是否为空,假如JS被禁用的话,咱们这个认证屏障是不是就消失了呢?(虽然一般不会禁用掉但是还是存在风险) 所以我们一般做两种认证一种是前端做一遍认证,在后端做一遍认证. 首先咱们看一下下面的案例: from django.shortcuts import render # Create your views here. def user_list(request): host

Python自动化运维系列之Django Form表单验证

Form表单验证 Django核心功能组件之一,虽然也可以在前端使用JS对表单验证, 但是Django中已经为我们准备好的Form功能还算是很强大的,有时候比较适合运维,为我们简化了很多前端开发工作. Django最主要的几个功能有4个     ·  生成HTML标签     ·  验证数据(表单错误信息提示)     ·  HTML 表单保留上次提交数据     ·  初始化页面表单内容 Django的Form内容还是挺多的,我们可以从一个简单的登陆验证例子来看看Form的基本功能使用 1)新

Django之七表单

前言 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的支柱. 本节介绍如何用Django对用户通过表单提交的数据进行访问.有效性检查以及其它处理. 与此同时,我们将介绍HttpRequest对象和Form对象. 从Request对象种获取数据 我们在第三节讲述View的函数时已经介绍过HttpRequest对象了,但当时并没有讲太多. 让我们回忆下:每个view函数的第一个参数是一个HttpRequest对象,就像下面这

django模型表单ModelForm

如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单.比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中.在这种情况下,写一个forms.Form类,然后在表单类中定义字段,这种一般创建表单的做法是冗余的,因为你已经在ORM模型model中定义了字段的属性和功能,完全没必要重新写一遍字段. 一.核心用法 基于这个原因,Django提供一个辅助类帮助我们利用Django的ORM模型model创建Form. 像下面这样: >>&

django的表单系统

1.概述: django表单系统中,自定义表单类都是以django.forms.Form为父类进行创建: django中的Form一般有两种功能: 生成特定的HTML标签 后台验证用户提交的数据 2.在views文件中自定义form表单类: # 自定义form表单类 class Userinfo(forms.Form): name = forms.CharField() password = forms.CharField() email = forms.EmailField() message

16.Django提交表单

Django表单提交一共有三种方式: 1.不使用Django组件进行提交 2.使用django.forms.Form(所有表单类的父类)进行提交 3.使用django.forms.ModelForm(可以和模型绑定的Form)进行提交 这里的例子是,给Publisher这个表里添加数据,表结构如下: class Publisher(models.Model): name = models.CharField("名称",max_length=30) address = models.Ch

Django之表单

Request对象 每个view函数的第一个参数是一个HttpRequest对象,就像下面这个hello()函数: from django.http import HttpResponse def hello(request): returnHttpResponse("Hello world") HttpRequest对象,比如上面代码里的request变量,有众多的属性与方法: 例: def current_url_view_good(request): return HttpRes

Django form表单的数据加载问题

今天在项目中遇到一个问题,有个django增删改查的模板页面,其中的编辑页面使用自定的form来构建的显示内容. 表单的数据时从数据库中查询出来展示的,当修改数据库的内容后,form的展示的信息并没有修改.当重启后,form的数据重新加载. 查了许多资料,都没有对form表单数据的加载时间的解答. 从现象来看,form的数据的加载时在服务启动时,就加载了.代码如下: view.py def testform(req):     form = testForms.testForm()     pr

Django的表单类

一.表单绑定状态:Django为继承自Form类的表单维护了一个绑定(bound)状态. 1.如果一个表单对象在实例化后被赋予过数据内容,则成该表单处于bound状态,只有处于bound状态的表单CIA具有表单数据验证的功能. 2.如果未被赋予过数据内容,则表单处于unbound状态,只有处于unbound状态的表单才能被赋予数据,是该表单变为bound状态. 注意:已经处于bound状态的表单不能在python代码中修改其数据,而只能有网页用户在页面中输入数据进行修改. 二.表单数据验证:Dj