当前位置: 首页 > 编程日记 > 正文

使用rest_framework写api接口的一些注意事项(axios发送ajax请求)

1. 类继承GenericAPIView,定义queryset

印象深刻的事:
由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset
没有设置渲染器:默认 [JSONRenderer,BrowsableAPIRenderer]
BrowsableAPIRenderer,内部检查当前视图函数是否有 get_queryset,如有则会调用。未设置,则断言异常。

2. 所有视图都有功能:添加到配置文件

比如统一渲染器,解析器等

3. URL统一规则

url后加不加/等,都要统一

4. 序列化

- 简单:fk/o2o/choice -> source
- 复杂:m2m/gfk -> SerializerMethodField

在序列化类中定义字段时,对于一些简单的外键、一对一字段或choice字段可以使用source方法获取想要的值

而复杂一些的多对多字段等可以使用自定义方法

class CourseSerializer(ModelSerializer):category = serializers.CharField(source='sub_category.name')xx = serializers.CharField(source='get_course_type_display')price_policy = serializers.SerializerMethodField()class Meta:model = models.Coursefields = ['id', 'name','category','xx','price_policy']def get_price_policy(self, obj):price_policy_list = obj.degreecourse_price_policy.all()return [{'id': row.id, 'price': row.price, 'period': row.get_valid_period_display()} for row inprice_policy_list]

5. cors

跨域请求可以通过中间件添加相应的响应头,一些参数还可以写到settings中

class Cors(MiddlewareMixin):def process_response(self, request, response):response['Access-Control-Allow-Origin'] = ','.join(settings.CORS_ORIGIN_LIST)if request.method == 'OPTIONS':response['Access-Control-Allow-Methods'] =  ','.join(settings.CORS_METHOD_LIST)response['Access-Control-Allow-Headers'] = ','.join(settings.CORS_HEADER_LIST)response['Access-Control-Allow-Credentials'] = 'true'return response

使用axios发送ajax请求

首先要下载axios

npm install axios --save

然后在main.js中导入,并使用Vue.prototype.$axios = axios方法,让我们可以在后面使用this.$axios使用它

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/store'
import axios from 'axios'Vue.prototype.$store = store
Vue.prototype.$axios = axios
axios.defaults.headers['Content-Type'] = "application/json"Vue.config.productionTip = false

这里axios.defaults.headers['Content-Type'] = "application/json"的意思是后续的axios发送请求时请求头中都会带有Content-Type='application/json',ajax中也能做相应的设置,如下

$.ajaxSetup({beforeSend: function(xhr, settings) {xhr.setRequestHeader("Content-Type", "application/json");}
});

使用

init(){// 发送Ajaxvar that = thisthis.$axios.request({url: this.$store.state.apiList.course,method:'GET',params:{course_type:1}}).then(function (arg) {console.log('then',arg)that.courseList =arg.data.data}).catch(function (arg) {console.log('catch',arg.response)})
}

通过axios.request方法发起ajax请求,参数url是发送的地址,method是发送方法,params是url中的参数,如果要发送请求体中的参数则使用data

then相当于ajax中的success,catch相当于error

转载于:https://www.cnblogs.com/weiwu1578/articles/8909014.html

相关文章:

iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)

[导读] 前面分享了 IIR/FIR/mean/梳状数字滤波器的具体设计实现,这几种使用起来或许觉得计算量大,相对复杂。实际工程应用中通常有必要过滤来自传感器或音频流的数据,以抑制不必要的噪声。有的应用场景,可能只需要一个最简单的一阶…

正则表达式中$1,$2 ===算是什么意思

$1,$2...是表示的小括号里的内容 $1是第一个小括号里的 ,$2是第2个小括号里的 比如 /gai([\w]?)over([\d])/ 匹配 gainover123 $1 括号里的 n $2 第2个括号里的 123转载于:https://www.cnblogs.com/vertko/p/5888902.html

为什么以太坊能成为区块链2.0的代表之作?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链的学习进入到第四天,前三天学习比特币,分别从比特币的前世、货币属性和背后的区块链技术学习。 比特币是区块链的1…

(转)搭建企业内部yum仓库(centos6+centos7+epel源)

搭建企业内部yum仓库(centos6centos7epel源) 原文:https://www.cnblogs.com/nulige/p/6081192.html https://www.linuxidc.com/Linux/2017-11/148723.htm---------部署yum仓库与定制rpm包 1. 创建yum仓库目录mkdir -p /data/yum_data/cd /data/yum_data/#可以上传rp…

vs按f5没反应_《死神vs火影》中最受欢迎的游戏角色,仙鸣当之无愧上榜

hello!大家好,又到了一日一度的杨某讲游戏环节啦,赶紧系好安全带,准备上车吧。《死神vs火影》作为一款深受广大群众欢迎的街机游戏,自然而然地涌现出了一系列知名游戏角色。那么,大多数人心目中最喜欢&…

IEC61850笔记--IEC61850应用入门(二)

IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,《IEC61850应用入门(第二版)》,开源代码libIEC61850及libIEC61850说明文档。 IEC61850标准内容参考IEC61850标准文档,以及IEC61850标准介绍文档《I…

区块链赚钱的9种方式

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 物联网火了一段时间,人工智能火了一段时间,无人驾驶火了一段时间。现在,通通被区块链的风头盖住了,都…

7、在对象内部尽量直接访问实例变量

本文概要: 1、首先给出结论是:除了几种特殊情况外,在读取实例变量的时候采用直接访问的形式,而在设置实例变量的时候通过属性来做。 2、讲解了使用getter、setter的好处。 3、列举了几种上面提到的特殊情况:有时不能使…

linux python2和python3共存_linux-Centos7安装python3并与python2共存

1.查看是否已经安装PythonCentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。使用 python -V 命令查看一下是否安装Python然后使用命令 which python 查看一下Python可执行文件的位置可见执行文件在/usr/bin/ 目录下,切换到该目录…

9月20号作业

转载于:https://www.cnblogs.com/kangy123/p/5890515.html

区块链以太坊五大开发工具,你喜欢哪个?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 以太坊(Ethereum)是运行智能合约的最受欢迎的分布式平台之一。因为虚拟货币近年来的发展,以太坊以区块链为基础引…

sublime text 3 中改变.vue文件的颜色

1、按 CtrlShiftP 2、输入install,选择install Package 3、输入vue,选择 vue syntax hightlight 如果上述方法不起作用,可以选择在下面连接中下载文件,手动安装 如何让你的.vue在sublime text 3 中变成彩色? 转载于:https://www…

nodejs端口被占用。

I had the same issue. I ran: $ ps aux | grep node to get the process id, then: $ sudo kill -9 followed by the process id to kill the process.转载于:https://www.cnblogs.com/facial/p/5893138.html

戴尔电脑管家_2020年笔记本电脑推荐指南:笔记本电脑应该怎么选?什么牌子的笔记本电脑更值得入手?...

笔记本电脑已经成为家家户户必不可少的移动装置了,作为一名互联网行业从业者,无论是居家还是工作也得有一台性价比较高的笔记本,才能满足工作需要了。接下来,跟大家唠一唠笔记本电脑的那些事儿~我将从以下几个方面进行介绍&#x…

行走在区块链上的智能合约

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 我和你打一个赌,我赌明天是雨天,你赌是晴天,赌注100大洋。假设明天是晴天,然后你跑过来管我要100大洋…

安装 telnet

yum install telnet-server yum install telnet service xinetd restart 查询是否正常启动telnet netstat -tnl |grep 23 telnet服务默认使用的23端口 转载于:https://www.cnblogs.com/gaobo543013306/p/8922021.html

python中json dumps_python中json.loads,dumps,jsonify使用

search_info {id:132,user_role:3}print type(search_info) #输出 #转为string用dumpsprint type(json.dumps(search_info)) #输出 #string转 dict用 loads()print type(json.loads(json.dumps(search_info))) #输出 如果前后台通过接口交互时,返回给前台json格式数…

区块链中的智能合约是什么?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 “智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行。”…

Python学习【第七篇】基本数据类型

基本数据类型 bytes数据类型 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别…

web项目答辩总结_web实战项目遇到问题总结探索

最近在写一个django的web项目,后端代码基本都已经写好了,主要是前端,以前学过一段前端,只是对一些基本的方法知道,但还有很多东西不熟练,问题是在遇到表单数据时候,如何对参数整体打包发送后端接…

iOS----------计算一段代码执行时间

CFAbsoluteTime start CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end CFAbsoluteTimeGetCurrent(); NSLog("%f", end - start);转载于:https://www.cnblogs.com/KiVen2015/p/8926265.html

区块链热度不减 应用风险不容忽视

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 今年来,除了区块链本身之外,越来越多的业内人士也更加关注区块链在金融等方面的应用。 4月2日,由京东金融研究院…

POJ 3258:River Hopscotch (最大化最小值)

【题意】 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离…

python获取文本光标_使用python readline时如何获取(并设置)当前bash光标位置?

我可以建议Python curses吗?The curses module provides an interface to the curses library, the de-facto standard for portable advanced terminal handling.While curses is most widely used in the Unix environment, versions are available for DOS, OS/2…

Gridview改变单元格颜色

if (e.Row.RowType DataControlRowType.DataRow) { e.Row.Cells[1].BackColor System.Drawing.Color.Red;//第二列的颜色 }转载于:https://www.cnblogs.com/objectxhy/p/5896970.html

区块链为什么这么热?有这么大热度的原因是什么

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链的热度是超乎想象的。 在上地和西二旗密集的写字楼办公空间里,年轻人三五成群聚在一起,在午饭后或散步或聚在茶水间…

使用nmonchart把.nmon文件转换成html

转载:https://blog.csdn.net/zd470015321/article/details/68923280 我的环境 :centos6.6 下载地址 nmon: http://nmon.sourceforge.net/pmwiki.php?nSite.Download nmon analyzer: https://www.ibm.com/developerworks/community/wikis/home?langen#!/wiki/Power…

java web中文乱码处理笔记

一、发生中文乱码的情况有以下三种: 1.表单form的两种提交出现中文乱码 ① get提交 ② post提交 2.超链接(本质是get提交)出现中文乱码 3、sendRedirect(发生乱码) 二、乱码产生的原因: 浏览器编码 utf-8 发送请求给服务器是会产…

python websocket 客户端_aiohttp Websocket客户端和HTTP

我正在编写一个应用程序,它需要从两个来源接收事件。有些事件来自Websocket客户机连接,有些来自传入的HTTP请求。aiohttp是否可以在同一个应用程序中同时使用这两个侦听器,还是需要两个单独的可执行文件?在我目前有一个函数&#…

你关注区块链了吗?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 前言:关于什么是区块链的论述有很多,本文从公共数据库、印刷机、治理、经济学、组织方式等方面进行阐述,作者观点…