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-vi/vim常用操作键
命令模式: :w 将编辑的数据写入硬盘档案中(常用) :w! 若文件属性为『只读』时,强制写入该档案.不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! :q 离开 vi (常用) :q! 若 ...
- 三大常用集群leader选举+哨兵模式原理
一,Zookeeper集群的leader选举 Zookeeper的选举机制两个触发条件:集群启动阶段和集群运行阶段leader挂机(这2种场景下选举的流程基本一致) 1,Zookeeper集群中的fo ...
- 用bcftools将多个vcf文件合并成一个vcf文件 或将多个vcf和合并成的vcf文件拆分成单个样本的vcf文件
1. 软件的安装 a. bcftools 的安装 b. bgzip的安装: https://blog.csdn.net/weixin_30471065/article/details/95108525 ...
- Redis Template部分接口学习记录
Redis Template是操作redis的一个封装模板,让我们更加简便的去操作redis. 操作键类型的接口: GeoOperations Redis的地理空间操作,如GEOADD,GEORADI ...
- tomcat任务部署
tomcat项目部署 主机 IP 需求 web-1 192.168.78.144 tomcat+jenkins web-2 192.168.78.145 tomcat 在RHEL-1主机上部署的jen ...
- bootstrap栅格系统,排版,代码,表格表单
一.栅格系统 栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局. 实例: <!DOCTYPE html> <html lang="zh-CN&q ...
- 2003031126-石升福-Python数据分析-五一假期作业
项目 内容 班级链接 20级数据班(本) 作业链接 五一假期作业 博客名称 2003031126-石升福-Python数据分析-五一假期作业 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自 ...
- InnoDB和MyISAM的区别(超详细)
1.事务 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务: ...
- Unity 导出设置iOS 项目
别人的代码 xcode打包部分设置的脚本如下 public class XcodeSetting : MonoBehaviour { private static List<Menu> m ...
- IT工具知识-11:一种安卓投屏到Win10失败的解决方法
软硬件平台 电脑:WIN10 LTSC 手机:红米K30Pro/MIUI 11.0.26 投屏软件:安卓端-自带投屏,WIN10-自带投屏(连接) 故障描述 之前还能用的,但是在换了个路由器之后就不能 ...