response

rest framework之渲染器

不问归期 提交于 2020-03-20 22:29:36
一、内置渲染器 REST框架包括许多内置的Renderer类,它们允许你使用各种媒体类型返回响应。还支持定义你自己的自定义渲染器。 内置渲染器的使用 1、全局设置 可以使用 DEFAULT_RENDERER_CLASSES 设置全局默认的渲染器集。例如,以下设置将使用 JSON 作为主要媒体类型: REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ) } 2、局部设置 from rest_framework.pagination import PageNumberPagination from rest_framework.parsers import JSONParser from rest_framework.renderers import JSONRenderer class BookView(GenericViewSet): """ 该视图只接受JSON数据的post请求 """ queryset = models.Book.objects.all() serializer_class = BookModelSerializer parser

OkHttp的使用

一曲冷凌霜 提交于 2020-03-20 21:17:09
本文转载出处: http://blog.csdn.net/lmj623565791/article/details/47911083 ; 本文出自: 【张鸿洋的博客】 一、概述 最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了。再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为不做评价。为了更好的在应对网络访问,学习下okhttp还是蛮必要的,本篇博客首先介绍okhttp的简单使用,主要包含: 一般的get请求 一般的post请求 基于Http的文件上传 文件下载 加载图片 支持请求回调,直接返回对象、对象集合 支持session的保持 最后会对上述几个功能进行封装,完整的封装类的地址见: https://github.com/hongyangAndroid/okhttp-utils 使用前,对于 Android Studio的用户,可以选择添加: compile 'com.squareup.okhttp:okhttp:2.4.0' 或者Eclipse的用户,可以下载最新的jar okhttp he latest JAR ,添加依赖就可以用了。 注意:okhttp内部依赖okio,别忘了同时导入okio: gradle: compile 'com.squareup.okio:okio:1.5.0' 最新的jar地址:

HTTP会话保持技术Cookie与Session

故事扮演 提交于 2020-03-20 07:35:42
摘要 : 本文介绍Cookie与Session原理,对于Cookie与Session的属性详情和其他扩展不做探讨。必须的前导知识:HTTP协议原理。 一、HTTP协议的缺陷—— 无状态 因为HTTP1.0被设计成是基于TCP协议的 短连接 ,即完成一次“请求-应答”之后会断开连接。所以,服务器接到一次HTTP请求时不知道之前是否曾经收到过同一个客户端发送来的请求,即“无状态”。这意味着如果服务器处理请求时需要上次请求的信息,客户端必须重传全部信息,这样可能导致每次连接传送的数据量巨增。 思考1:为什么HTTP被设计成短连接?能不能是长连接,这样就保存了会话状态? 二、Cookie技术——客户端会话保持 (一)Cookie的原理 Cookie是通过HTTP协议扩展实现的,即在HTTP请求头里面增加Cookie字段,用于存储客户端信息。 Cookie的原理和实现步骤参考图1: 图1:Cookie实现会话保持步骤截图 1.客户端向Web服务器发起HTTP请求; 2.服务器在返回响应时,在HTTP响应头中设置Set-Cookie字段,该字段存储客户端信息和状态; Java实现: Cookie cookie = new Cookie("username","zhang3"); response.addCookie(cookie); 3.客户端解析服务器HTTP响应报头中的Set

servlet生命周期

做~自己de王妃 提交于 2020-03-19 13:56:36
1. 生命周期 我们之前使用的都是javax.servlet.http.HttpServlet,这个类实现了javax.servlet.Servlet接口,而这个接口中定义的三个方法是所有servlet都必须实现的。 package javax.servlet; public interface Servlet { void init(ServletConfig config); void service(ServletRequest request, ServletResponse response); void destroy(); } 如图所示,tomcat之类的服务器首先根据web.xml中的定义实例化servlet,然后调用它的init()方法进行初始化,init()方法的ServletConfig参数是服务器传递进servlet的,其中包含web.xml配置的初始化信息和ServletContext对象等共享内容。 初始化后的servlet实例便进入等待请求的状态,当有与servlet-mapping匹配的请求进入时,服务器会调用servlet实例的service方法,传入ServletRequest与ServletResponse两个参数等待servlet处理完毕。 注意一点,对于每个web应用,内存中只存在一个servlet实例

使用response.setHeader(\"Content-Disposition\",\"attachment;filename=\"+fName)下载文件,中文文件名无法显示的问题

僤鯓⒐⒋嵵緔 提交于 2020-03-19 12:41:01
今天遇到这么一个情况,在Action代码中进行文件下载:   ActionForm得到file_id,通过file_id进行数据库查询得到file_name以及服务器硬盘上的file_uri,其中file_name是中文,然后通过如下代码下载 response.setContentType("application/x-download"); response.setHeader("Content-Disposition","attachment;filename="+file_name); OutputStream outputStream = response.getOutputStream(); InputStream inputStream = new FileInputStream(file_uri()); byte[] buffer = new byte[1024]; int i = -1; while ((i = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, i); } outputStream.flush(); outputStream.close(); inputStream.close(); 假设file_name的内容是:“工程文档.docx” 那么下载的结果就是一个名为

HTTP长连接

你离开我真会死。 提交于 2020-03-19 09:30:52
尝试翻译片技术文章。 What is HTTP Persistent Connections? HTTP persistent connections, also called HTTP keep-alive, or HTTP connection reuse, is the idea of using the same TCP connection to send and receive multiple HTTP requests/responses, as opposed to opening a new one for every single request/response pair. Using persistent connections is very important for improving HTTP performance. 什么是HTTP长连接? HTTP长连接,与一般每次发起http请求或响应都要建立一个tcp连接不同,http长连接利用同一个tcp连接处理多个http请求和响应,也叫HTTP keep-alive,或者http连接重用。使用http长连接可以提高http请求/响应的性能。 There are several advantages of using persistent connections, including: Network

Vue 05

可紊 提交于 2020-03-19 04:55:00
目录 axios 安装 配置 使用 CORS跨域问题 解决django跨域问题 aixos提交数据 Vue配置ElementUI Vue配置BootStrap axios 就是Vue的ajax插件 安装 在vue项目文件下安装 cnpm install axios 配置 为vue项目全局配置axios import Axios from axios // 添加ajax原型(类属性) Vue.prototype.$ajax = Axios 使用 let _this = this this.$ajax({ // 后端提交地址 url: 'http://127.0.0.1:8000/loginAction', method: 'post', params: { username: this.username, password: this.password } }).then(function(response) { // this代表的是回调then这个方法的调用者(axios插件),也就是发生了this的重指向 // 要更新页面的title变量,title属于vue实例 // response为回调的对象,该对象的data属性就是后台返回的数据 _this.title = response.data }).catch(function(error) { window.console

rest-framework之路由

淺唱寂寞╮ 提交于 2020-03-19 02:15:26
路由 1、路由第一种写法-原始方式 这种方式也就是前面一直在写的; urls.py from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^books/$', views.BookView.as_view()), url(r'^books/(?P<pk>\d+)$', views.BookDetailView.as_view()), ] views.py class BookView(APIView): def get(self, request): book_list = models.Book.objects.all() bs = BookSerializers(book_list, many=True) return Response(bs.data) def post(self, request): # 添加一条数据 print(request.data) bs=BookSerializers(data=request.data) if bs.is_valid(): bs.save() # 生成记录 return Response(bs.data) else: return Response(bs.errors) class BookDetailView(APIView)

python-day76--django-中间件

老子叫甜甜 提交于 2020-03-19 01:32:07
什么是中间件?中间件应用场景?和装饰器区别?中间件 对于所有批量的请求用中间件合适,而对于某些请求个数少用装饰器合适 - 中间件是什么? - 是一个类 - 方法名必须是process_request/process_response,否则无效 - 返回值注意: # 无返回值:继续执行后续中间件和视图函数 # 有返回值:执行自己的process_response和上面的response - 做过什么: - 用户登录验证 - csrf - session - 权限管理*** ---------------------------------------------- asd.a.py from django.conf import settings from django.shortcuts import redirect class MiddlewareMixin(object): def __init__(self, get_response=None): self.get_response = get_response super(MiddlewareMixin, self).__init__() def __call__(self, request): response = None if hasattr(self, 'process_request'): response =

tomcat访问日志

会有一股神秘感。 提交于 2020-03-18 22:09:51
* %a - Remote IP address # 远程ip地址 * %A - Local IP address # 本地ip地址 * %b - Bytes sent, excluding HTTP headers, or '-' if zero # 发送的大小 * %B - Bytes sent, excluding HTTP headers # 发送的大小 * %h - Remote host name (or IP address if enableLookups for the connector is false) # 远程主机名 * %H - Request protocol # 请求协议 * %l - Remote logical username from identd (always returns '-') # 远程逻辑名 * %m - Request method (GET, POST, etc.) # 请求方法 * %p - Local port on which this request was received. See also %{xxx}p below. # 本地端口 * %q - Query string (prepended with a '?' if it exists) # 请求字段 * %r - First line of the