https://www.cnblogs.com/jabbok/p/9273786.html

在之前学习了html form信息传递到django,然后进行处理,但是这很不方便。

django有自己的组件Form

1 django Form的验证思路

前端:还是提交form表单

后端:在app.views的函数里,把请求传递到forms.py的forms.Form类,进行匹配,得到正确和错误信息。

主要有三部分只是,views里的响应机制,form.py里创建响应的表单类,html里的模板信息

views:

def user_login(request):
if request.method == 'POST': #当收到POST请求
form = AddForm(request.POST) #实例化表单类,将接受到的数据通过AddForm验证 if form.is_valid(): #验证请求的内容是否验证通过。通过是True,否则False。
a = form.cleaned_data['a'] #cleaned_data类型是字典,里面是提交成功后的信息
b = form.cleaned_data['b'] #从表单类中获取的数据赋值给a,b。
return HttpResponse(str(int(a) + int(b))) else: #当收到GET请求
form = AddForm() #实例化表单类,展示表单类中的字段,表现到HTML就是<form>元素,实质就是渲染一张空表单,让用户填数据 return render(request,'index.html',{'form':form}) def get_name(request):
if request.method == 'POST':
form = NameForm(request.POST)
print(type(form),form)
if form.is_valid():
return HttpResponse('good!')
else:
form = NameForm()
print(type(form),form) return render(request,'name.html',{'form':form})

  

forms

from django import forms

class AddForm(forms.Form):
a = forms.IntegerField() #表单类的字段会映射到HTML表单的<input>元素
b = forms.IntegerField() #这和models类似
c = forms.IntegerField() #forms可选多种字段类型,对应不同的HTML输入元素 class NameForm(forms.Form):
your_name = forms.CharField(label='your name',max_length=120)

  

html

user_login:

{#    这是一个表单渲染#}
<form method="post">
{# 防伪保护#}
{% csrf_token %}
{{ form }}
<input type="submit" value="提交">
</form>

  

{{ form }}在get和post时,都会渲染为:

<tr><th><label for="id_a">A:</label></th><td><input type="number" name="a" required id="id_a"></td></tr>
<tr><th><label for="id_b">B:</label></th><td><input type="number" name="b" required id="id_b"></td></tr>
<tr><th><label for="id_c">C:</label></th><td><input type="number" name="c" required id="id_c"></td></tr>

  

getname:

<form action="/getname/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="提交">
</form>

  

{{ form }}在get和post的渲染,post多了一个value。

<tr><th><label for="id_your_name">your name:</label></th><td><input type="text" name="your_name" maxlength="120" required id="id_your_name"></td></tr>
<tr><th><label for="id_your_name">your name:</label></th><td><input type="text" name="your_name" value="jab" maxlength="120" required id="id_your_name"></td></tr>

  

2 表单功能

djangoForm组件的更多相关文章

  1. Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合

    Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合 一丶FORM的介绍 1.生成页面可用的HTML标签 2.对用户提交的 ...

  2. 8.Django-form组件

    1.form组件的校验功能 文件formsdemo models from django.db import models # Create your models here. class UserI ...

  3. Django-form组件和ModelForm组件

    一. 构建Form表单 通过建一个类,添加需要进行验证的form字段,继而添加验证条件 from django import forms from django.forms import widget ...

  4. python3-开发进阶Django-form组件中model form组件

    Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样 ...

  5. Django--form组件cookie/session

    Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始值 help_ ...

  6. Django-Form组件-forms.ModelForm

    froms.ModelForm 具有models操作数据库字段的功能,还具有Form的功能.较Form组件而言,根据model自动生成Form. 使用注册的案例进行初步认识 # 使用ModelForm ...

  7. Django-Form组件-forms.Form

    forms.Form ​ 在之前的示例HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时很多时候都需要对用户的输入做校验,比如校验用 ...

  8. Djangoform组件——ModelForm的基本使用

    from django.contrib import admin from django.urls import path from app01 import views urlpatterns = ...

  9. Django-Form组件之字段

    Form类 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML; 1.Django内置字段如下: 1 2 3 4 5 6 7 8 9 10 1 ...

随机推荐

  1. AndroidPageObjectTest_TimeOutManagement.java

    以下代码使用ApiDemos-debug.apk进行测试 //这个脚本用于演示PageFactory的功能:设置timeout时间. package com.saucelabs.appium; imp ...

  2. include vector 编译出错VC++

    error C2665: “operator new” : 5个重载中没有一个可以转换参数1(从“const char [71]”类型)这个错误是怎么回事啊,搜索了整个项目好像没有可疑的new操作阿. ...

  3. zkui部署

    1.拉取代码 #git clone https://github.com/DeemOpen/zkui.git 2.构建并安装程序 #cd zkui/ #yum install -y maven #mv ...

  4. ios非UTF-8格式的网页解析

    网上有很多关于ios xml解析的方法,关于非UTF-8格式的网页解析也不少,我也试着看了好几个,但都没成功.今天无意中却弄好了,所以想和大家分享下.其实很简单,下面说下怎么得到非UTF-8格式的网页 ...

  5. 端口扫描程序nmap使用手册

        其实还是建议看英文的man,对以后学习其他东西很有帮助的:) 摘要 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等 ...

  6. 「LOJ#103」子串查找 (Hash

    题目描述 这是一道模板题. 给定一个字符串 A A A 和一个字符串 B B B,求 B B B 在 A A A 中的出现次数.AAA 和 BBB 中的字符均为英语大写字母或小写字母. A A A 中 ...

  7. [HAOI 2012] 容易题

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2751 [算法] 考虑k = 0的情况 , 根据乘法原理 : Ans = (n * ( ...

  8. Update 出现在的问题

    报错提示:之前的操作没有完成,运行deanup被打断,请先执行Cleanup方法. 正常右键点击Cleanup,如果只让默认值勾选,可能还是会报这个错.所以正确操作如下: 全部选中再点击OK,这样就可 ...

  9. linux下printf函数为什么不加\n就不能输出相关的内容 ?

    转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/53255970 原因:  输出缓冲区的问题. unix上标准输入输出都是带有缓存的, ...

  10. Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子

    4. Flexpaper简单使用 通过上面三章的内容,大家对Flexpaper.SWFTools应该有大概的了解了,SWF文件也已经生成了,我们开始进入Flexpaper的使用的介绍. 本章中只演示F ...