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. Unity编译时找不到AndroidSDK的问题 | Unable to list target platforms

    解决方式 1.从官网下载一个旧版本的 Android SDK tools 25.2.3.tools_r25.2.3-windows.zip. 2. 解压 3. 替换原来sdk目录下tools

  2. ZOJ - 3954 Seven-Segment Display 【状态标记】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3954 题意 有一块 LED 灯 然后上面有七块灯管 在显示不同数 ...

  3. Local storage htm5

    使用本地存储,web应用可以在用户浏览器中本地存储数据. 在HTML5之前,应用数据存储必须使用cookie,包括每个服务端的请求,本地存储更加安全,并且可以存储大量的数据到本地,不影响网站的性能. ...

  4. 【MongoDB学习-在.NET中的简单操作类】

    1.新建MVC项目, 管理NuGet包,进入下载MongDB.net库文件 2.新增项目DAL数据访问层,引用以下库文件: 3.C# 访问MongoDB通用方法类: using MongoDB.Dri ...

  5. 【转载】如何在 C#中访问 JavaScript函数?

    如何在 C#中访问 JavaScript函数? 时间:13-10-17 栏目:Unity3D教程 作者:zqcyou 评论:0     如何在 C#中访问 JavaScript函数?答案如下:c#代码 ...

  6. 使用idea导入远程git版本库项目

    1.选择git方式导入 2.设置远程git项目地址 3.测试是否连接成功 4.选择yes,检查项目 5.如果有下一步,直接next下去就可以了.

  7. RTMP协议的理解

    RTMP协议:real time message protocol 工作原理: 先采集摄像头视频和麦克风音频信息,再进行音视频的编码(mpeg),通过FMLE(Flash Media Live Enc ...

  8. 五、hibernate在myeclipse中生成实体和映射

  9. Robot Framework基础学习(一)

    Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用  变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...

  10. Game of Peace

    Time Limit: 4000ms, Special Time Limit:10000ms, Memory Limit:65536KB Total submit users: 20, Accepte ...