<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陆页面例子</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data"> #action="" 提交到目标url method="post" 提交模式(get or post ) enctype="multipart/form-data" 用于文件上传,无这个参数from无法上传
 {% csrf_token %}
<p>用户名:<input type="text" name="username"></p>
<p>密&emsp;码:<input type="password" name="password"></p>
<p>爱好: <input type="checkbox" value="骑马" name = "hobby"> 骑马<input type="checkbox" value="跑步" name = "hobby">跑步 <input type="checkbox" value="跳绳" name = "hobby">跳绳 </p>
<p>文件上传:<input type="file" name="file" multiple></p> # multiple 支持多个文件 上传 <input type="submit" value="登陆"> </form>
</body>
</html>
#action=""  提交到目标url   method="post" 提交模式(get or post )   enctype="multipart/form-data" 用于文件上传,无这个参数from无法上传
 # multiple  支持多个文件 上传
{% csrf_token %}  post时必需要有令牌, 用于防止 跨站连接攻击.
csrfmiddlewaretoken: hWFuZjVzV9PJNqcPV8mzBCXYrO7QJYqAkcn2EC0BZ0bdXKmmv8ORgHtz92wd8B2R
username: zhuoda
password: 1111
hobby: 骑马
hobby: 跑步
file:

后端 交互:获取前面提交 的数据.

request.GET.get[' username']

request.POST.get['password']

def login(request):
# return render(request, 'index.html')
# return HttpResponse('这个学生id=%s的详情页' %pk)
if request.method == 'POST': # 如果是 POST ,
username = request.POST.get('username')
password = request.POST.get('password')
hobby = request.POST.getlist('hobby')
file = request.POST.get('file')
if username == 'zhuoda' and password == '': # for line in file:
return HttpResponse('%s 的爱好:%s' % (username, hobby.decode()))
# return redirect(reverse('student: index'))
return render(request, 'login.html') # 不是post 返回 login.html 重新登陆

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API

一个表单必须指定两样东西:
1. form的method参数用于设置表单的提交方式,默认使用POST.
2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前

一键多值的getlist方法:

request对象的属性GET、POST都是QueryDict类型的对象
与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

- 方法get():
根据键获取值,只能获取键的一个值
如果一个键同时拥有多个值,获取最后一值
- 方法getlist():
根据键获取值将键的值以列表返回
可以获取一个键的多个值

request中GET和POST对象的属性

- QueryDict类型的对象
- 包含get请求方式的所有参数
- 与url请求地址中的参数对应,位于?后面
- 参数的格式是键值对,如key1=value1
- 多个参数之间,使用&连接,如key1=value1&key2=value2

POST属性

- QueryDict类型的对象
- 包含post请求方式的所有参数
- 与form表单中的控件对应
- 表单中控件要有name属性,则name属性的值为键,value属性的值为值,构成键值对提交
- 对于checkbox控件,name属性一样为一组,当控件被选中后会被提交,存在一键多值的情况.

GET和POST请求方式总结:
1. GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。
2. POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。
3. POST方法的参数不能在URL当中看到,他是通过body参数传递给服务器的,所以相对GET方法直接能在URL当中看到传递的参数,显得更加安全一些.当然,也不能简单的判定POST方法比GET方法更安全,要使网站保持安全,需要做更多的安全处理

文件上传:

Django在处理文件上传的时候,文件数据被保存在了request.FILES
FILES中的每个键为<input type="file" name="" />中的name

设置文件的存储路径:
1.在项目根目录下static中创建media文件夹
2.图片上传后,会被保存到“/static/media/文件”
3.打开settings.py文件,增加media_root项

文件上传form表单中:

FILES只有在请求的方法为POST 且提交的<form>带有enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象

HttpResponse对象:

HttpResponse的子类:
返回数据的响应函数有:
HttpResponse() 返回简单的字符串对象
render() 渲染模板
redirect() 重定向
JsonResponse() 返回json数据

- 帮助用户创建JSON编码的响应
- 参数data是字典对象
- JsonResponse的默认Content-Type为application/json

HTTP协议:
HTTP(超文本传输协议)是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

浏览器中的----cookie:

服务器中设置cookie及获取cookie:

注意:设置cookie值以及删除cookie值都是response对象的操作,而获取cookie是从requeset相应中获得的.

虽然cookie可以保存状态但注意不要存储敏感信息.

django 请求与响应的更多相关文章

  1. django请求和响应

    本文转载自https://blog.csdn.net/xiaogeldx/article/details/88096341 HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建 ...

  2. Django - 请求与响应、表单、中间件、上下文处理器

    请求与响应篇 一.HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象.视图函数的第一个参数(request)是HttpRequest对象在djang ...

  3. django 请求 与 响应

    目录 请求(HttpRequest) 与 响应(HttpResponse) HttpRequest对象 请求相关的常用值 属性 HttpResponse对象 JsonResponse对象 render ...

  4. Django 请求和响应 request return

    request.method 请求方法 request.get  get请求信息 request.post  post请求信息 request.path 请求路径 方法: requset.get_fu ...

  5. DRF对Django请求响应做了技术升级

    Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优 ...

  6. Django整理(五) - 请求与响应 - request对象

    请求对象 一.客户端传参的几种方式 1. 通过URL路径(path)传递,例如:http://127.0.0.1:8000/news/1/2,两个参数:id和page 2. 通过 query stri ...

  7. Django底层剖析之一次请求到响应的整个流程

    As we all know,所有的Web应用,其本质上其实就是一个socket服务端,而用户的浏览器就是一个socket客户端. #!/usr/bin/env python #coding:utf- ...

  8. Django编写RESTful API(二):请求和响应

    欢迎访问我的个人网站:www.comingnext.cn 前言 在上一篇文章,已经实现了访问指定URL就返回了指定的数据,这也体现了RESTful API的一个理念,每一个URL代表着一个资源.当然我 ...

  9. Django REST FrameWork中文教程2:请求和响应

    从这一点开始,我们将真正开始覆盖REST框架的核心.我们来介绍几个基本的构建块. 请求对象REST框架引入了Request扩展常规的对象HttpRequest,并提供更灵活的请求解析.Request对 ...

随机推荐

  1. php环境和使用方法

    下载好所需要的软件 (含phpmywind  phpstudy  navicat for my sql ) 如果Navicat 的试用期过期,请使用通杀navicat 的通杀Navica11_2-XX ...

  2. yii2 获取模块名、控制器名、方法名

    在视图中: 模块名  $this->context->module->id控制器名 $this->context->id方法名 $this->context-> ...

  3. js中this是什么?

    this是js的一个关键字 指定一个对象然后去替代他 分两种情况函数内的this和函数外的this 函数内的this指向行为发生的主体 函数外的this都指向window函数内的this跟函数在哪定义 ...

  4. freebsd安装python2

    第一步  cd /usr/ports/lang/python27 第二步 输入以下命令(需要联网) make make install 到此如果输入python无效   继续 第三步 cd /usr/ ...

  5. 在线HTML编辑器KindEditor

     简介 KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome.Safari.Opera等主流浏览器.KindEdi ...

  6. Java高级特性 第4节 输入输出流

    一.使用I/O操作文件 关键步骤: 使用File类操作文件或目录属性 使用FileInputStream类读文本文件 使用FileOutputStram类写文本文件 使用BufferedReader类 ...

  7. 我发起并创立了一个 C 语言编译器 开源项目 InnerC

    本文是 VMBC / D#  项目 的 系列文章, 有关 VMBC / D# ,  见 <我发起并创立了一个 VMBC 的 子项目 D#>(以下简称 <D#>)  https: ...

  8. 11g R2 RAC 虚拟机

    虚拟机安装RAC文档 本文档包含内容 一:安装系统 二:各节点配置系统参数 三:虚拟机创建共享存储 四:配置磁盘绑定 五:安装GRID 六:创建ASM DG 七:安装database 八:安装碰到的问 ...

  9. java工程师-面试知识点总结

    目录(转载) [x] 一.Java基础(语言.集合框架.OOP.设计模式等) [x] 二.Java高级(JavaEE.框架.服务器.工具等) [x] 三.多线程和并发 [x] 四.Java虚拟机 [x ...

  10. QThread的一些使用心得

    qthread这个类主要用于解决pyqt中多线程的问题,常见用法是将后台代码封装在该类的run()方法中,再对qthread对象执行start()函数来启动线程. 但往往一个业务会有粒度划分,多个粒度 ...