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. NOIP2010_T4_引水入城 bfs+贪心

    在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行 M 列的矩形,如上图所示,其中每个格子都代表一座城 市,每座城市都有一个海拔高度.为了使 ...

  2. nginx-upsync-module安装

    1.安装nginx-upsync-module wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip 作用:n ...

  3. codeforces B. Ilya and Queries 解题报告

    题目链接:http://codeforces.com/problemset/problem/313/B 题目意思:给出一个只有 "."  和  "#" 组成的序 ...

  4. 洛谷【P839】【NOI导刊】——数页码

    题面 一道找规律好题... 首先,我们肯定只能一位一位的统计答案,考虑从高位向低位统计,显然这样要方便的多. 对于第i位,我们统计从$a[i+1]*10^i+0$到$a[i+1]*10^i+a[i]* ...

  5. cygwin Could not create directory '/home/Administrator/.ssh'

    在cygwin下运行: ssh-keygen -C "634772208@qq.com" -t rsa 时,出现如下错误: cygwin Could not create dire ...

  6. [APIO 2010] 特别行动队

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1911 [算法] 设前i个士兵"修正"后的最大战斗力为fi 令su ...

  7. bzoj2875随机数生成器——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵快速幂,把x和c分开求,最后加上即可: 为防止爆long long,要用快速乘. ...

  8. TextMode="Password" 赋值(小技巧)

    TextMode="Password"不能在后台直接向前台赋值,但是可以用js赋值. txtUserPassword.Attributes.Add("value" ...

  9. HDOJ-2058

    The sum problem Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  10. java的环境变量classpath中加点号 ‘.’ 的作用

    java的环境变量classpath中加点号 ‘.’ 的作用 “.”表示当前目录,就是编译或者执行程序时,你的.class文件所在的目录: 当找.class文件时,先去“.”路径下找,找不到的话,在去 ...