Django之form表单相关操作
摘要
本章讲述了form表单的action参数,以及前后端简单传递数据的方式:form表单中的method参数,input标签中的name参数,GET/POST请求,以及后端接收数据的方式:request.method方法
form表单
form表单的action参数
# 控制数据提交的地址
'''
1. action='',默认向当前地址发送数据
2. action='https://www.baidu.com/' 完整地址,向所写地址发送数据
3. action='/index/' 路由地址,向当前服务端的index地址提交数据
127.0.0.1/index/
'''
form表单的method参数
# 控制数据提交的方法
'''
get 默认,向别人请求数据(可以携带一些要求,如一些筛选条件)
携带数据方式:
URL?aaa=bbb&xxx=ccc 使用?符号携带,使用&符号隔开多个条件
限制:
1. 携带的数据的大小有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。
对于服务器:
Apache (Server):最大url长度为8,192个字符。
Microsoft Internet Information Server(IIS):最大url的长度为16,384个字符。
对于浏览器:
Microsoft Internet Explorer (Browser):URL的最大限制为2,083个字符,超过限制提交按钮将失效。
Firefox (Browser):URL的长度限制为65,536个字符
Safari (Browser):URL最大长度限制为 80,000个字符。
Opera (Browser):URL最大长度限制为190,000个字符。
Google (chrome):URL最大长度限制为8,182个字符。
2. 携带的数据因为是明文,所以不能有敏感数据
post 向别人提交数据
携带数据的方式: 请求体
请求体携带的数据安全性较高,并且大小没有限制
'''
request.method方法
简介
request.method 获取请求方式,结果是纯大写的字符串数据
GET\POST
request.POST 获取请求体中携带的数据
request.POST.get() 获取列表最后一个数据值
request.POST.getlist() 获取整个列表数据,以列表形式返回
request.GET 获取请求中url中问号后面携带的数据,无论GET\POST都会传递数据
request.GET.get() 获取列表最后一个数据值
request.GET.getlist() 获取整个列表数据,以列表形式返回
get请求传递数据
# input标签添加name属性值
<div class="container">
<div class="row">
<h1 class="text-center">用户登录</h1>
<div class="col-md-6 col-md-offset-3">
<form action="">
<p>username:
<input type="text" class="form-control" name="name">
</p>
<p>password:
<input type="password" class="form-control" name="pwd">
</p>
<input type="submit" class="btn btn-block btn-success">
</form>
</div>
</div>
</div>
# 在浏览器username处填写Tom,在password处填写123
# 此时提交表单后,浏览器的url会变为:http://127.0.0.1:8000/login/?name=Tom&pwd=123
post请求传递数据
<div class="container">
<div class="row">
<h1 class="text-center">用户登录</h1>
<div class="col-md-6 col-md-offset-3">
<form action="" method="post"> # 修改method传递方式
{% csrf_token %}
<p>username:
<input type="text" class="form-control" name="name">
</p>
<p>password:
<input type="password" class="form-control" name="pwd">
</p>
<input type="submit" class="btn btn-block btn-success">
</form>
</div>
</div>
</div>
现在的问题是,后端如何知道用户发送的是get请求还是post请求?方法如下:
def login_func(request):
# 如果问号后面携带数据,可使用request.GET获取,例如url为:http://127.0.0.1:8000/login/?name=jack
print(request.GET) # 返回: <QueryDict: {'name': ['jack']}>
if request.method == 'GET':
return render(request, 'login.html')
elif request.method == 'POST':
print(request.POST) # 返回 <QueryDict: {'name': ['jack'], 'pwd': ['123']}>
name = request.POST.get('name') # 返回jack
pwd = request.POST.get('pwd') # 返回123
print(name, pwd)
print(request.POST.getlist('name')) # 返回['Jack', 'Rose', 'Maria']
return HttpResponse('The post get the data')
# 如果要返回多个数据,需要一次性接收(checkbox这种),可以使用下面的方法:
print(request.POST.getlist('name')) # 返回['Jack', 'Rose', 'Maria']
GET/POST实际应用,简单登录方式实现
# 前端页面使用上面的html代码,在此不再重复
# 后端代码如下
def login_func(request):
if request.method == 'POST':
name = request.POST.get('name')
pwd = request.POST.get('pwd')
# 注意,此种方法收到的前端数据都是字符串
if name == 'jack' and pwd == '123':
return HttpResponse('用户登录成功')
return HttpResponse('用户名或密码错误')
return render(request, 'login.html')
总结
可以看到,django学会了传输数据的简单方式后,就可以实现前后端数据的传输,但是如果要实现数据交互,就需要使用数据库了,后面就需要开始学习django与数据库如何交互的。
Django之form表单相关操作的更多相关文章
- JS之Form表单相关操作
获取ID组件的值 var userid=document.getElementById('userid').value;var cdkey=document.getElementById('cdkey ...
- Django的form表单
html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...
- 转载:Django之form表单
转载: 一.使用form类创建一个表单 先定义好一个RegForm类: forms.py from django import forms # 导入forms类 class NameForm(form ...
- Django 11 form表单(状态保持session、form表单及注册实现)
Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...
- Django--分页器(paginator)、Django的用户认证、Django的FORM表单
分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...
- Django之form表单操作
小白必会三板斧 from django.shortcuts import render,HttpResponse,redirect HttpRespone:返回字符串 render:返回html页面 ...
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
- django中form表单的提交:
一,关于表单: 表单在百度百科的解释: 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...
- Django之form表单组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django 之 form表单
Django中的Form表单 1.背景 平时我们在书写form表单时,经常都是手动的去写一些input标签,让用户输入一些功能,进行一些校验的判断,等等.Django中的form表单就能够帮我们去实现 ...
随机推荐
- Linux模拟手动输入指令
当执行一个命令,其中会询问你的选择的时候,在脚本上,可以如此模拟手动输入: 运行的命令 <<EOF 键盘输入 EOF 例如挂载硬盘: DISK=/dev/sdb /sbin/fdisk $ ...
- Debug --> 箱线图
箱线图主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较. 箱形图最大的优点就是不受异常值的影响,能够准确稳定地描绘出数据的离散分布情况,同时也利于数据的清洗. 在箱图中,最上方和最下方 ...
- sql-labs less34--less41
less 34 汉 addslashes() 函数返回在预定义的字符前添加反斜杠的字符串. 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL 提示:该函数可用于为存储在数据 ...
- tomcat任务部署
tomcat项目部署 主机 IP 需求 web-1 192.168.78.144 tomcat+jenkins web-2 192.168.78.145 tomcat 在RHEL-1主机上部署的jen ...
- P3512 [POI2010]PIL-Pilots 单调队列的应用
题目描述 给定n,k和一个长度为n的序列,求最长的最大值最小值相差不超过k的序列 输入格式 第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n< ...
- error check
#define SYSTEM_PRTCT_NOERR 0 #define SYSTEM_PRTCT_COVER (1 << 0) /* */#define SYSTEM_PRTCT_LPH ...
- java 进程排查
[admin@New-OperSys-01 ~]$ jstack $pid | grep -A 50 55e7 "GC task thread#1 (ParallelGC)" os ...
- 让VMWARE ESXI 虚拟机开机进入BIOS设置
VMware vSphere Client 里面选中需要从光驱启动的客户机,单击右键选择 "编辑设置", 在虚拟机属性的窗口里面选择 "选项 "选项卡 ,单击& ...
- 使用Navicat查询后 , 在结果处更改数据
参考资料: https://blog.csdn.net/weixin_43786801/article/details/125364995 问题: 在使用Navicat查询是,往往想直接对查询结果进行 ...
- AssetBuddle(一)
一·含义 一个压缩文件,针对于特定平台的资产压缩包.资产包括模型,贴图,预制体,音效,材质球等,注意不包括c#脚本. 二·作用 相对于resource文件夹下面的东西打包后定死只读,无法修改. AB包 ...