实训日记 | Day 14. 调用第三方API
总述
2020年8月6日。是实训的第14天。
今天上午孟老师带我们学习了如何将调用第三方的公开API以及如何使用HBuilder将web应用快速打包成安卓可以使用的apk包。
调用第三方的公开API,是以高德地图为例的。说实话,高德地图作为一个成熟的商业地图导航提供商,它的API调用并不算太简单。
老师还演示了如何将其他地方下载过来的数据与高德地图API结合的过程,过程十分繁琐,但也有趣。
调用API
高德地图
打开高德地图开放平台。

点击注册并完成个人开发者认证。
点击控制台,在我的应用-应用管理中,创建新应用。

点击左上角的添加,选择Web端的服务平台。

注意这个Key,后续会使用到。

点击开发支持,有API文档可供阅读。

复制一个示例到html文件中。点击运行,则可看到地图效果。


pandas to_dict 的用法
1 | from django.test import TestCase |
pandas 中的to_dict 可以对DataFrame类型的数据进行转换
可以选择六种的转换类型,分别对应于参数 ‘dict’, ‘list’, ‘series’, ‘split’, ‘records’, ‘index’,下面逐一介绍每种的用法。
1 | Help on method to_dict in module pandas.core.frame: |
选择参数orient=‘dict’
dict也是默认的参数,下面的data数据类型为DataFrame结构, 会形成 {column -> {index -> value}}这样的结构的字典,可以看成是一种双重字典结构。
- 单独提取每列的值及其索引,然后组合成一个字典
- 再将上述的列属性作为关键字(key),值(values)为上述的字典
查询方式为 :data_dict[key1][key2]
- data_dict 为参数选择orient=’dict’时的数据名
- key1 为列属性的键值(外层)
- key2 为内层字典对应的键值
选择参数orient=‘list’
和1中比较相似,只不过内层变成了一个列表,结构为{column -> [values]}
查询方式为: data_list[keys][index]
选择参数orient=‘series’
形成结构**{column -> Series(values)}**
调用格式为:data_series[key1][key2]或data_dict[key1]
- data_series 为数据对应的名字
- key1 为列属性的键值,如本例中的’age’ , ‘embarked’等
- key2 使用数据原始的索引(可选)
选择参数orient=‘split’
形成**{index -> [index], columns -> [columns], data -> [values]}**的结构,是将数据、索引、属性名单独脱离出来构成字典
调用方式有 data_split[‘index’],data_split[‘data’],data_split[‘columns’]+ data_list 为关键字orient=‘list’ 时对应的数据名
- keys 为列属性的键值,如本例中的’age’ , 'embarked’等
- index 为整型索引,从0开始到最后
选择参数orient='records’时
形成***[{column -> value}, … , {column -> value}]***的结构
整体构成一个列表,内层是将原始数据的每行提取出来形成字典
调用格式为data_records[index][key1]
选择参数orient='index’时
形成{index -> {column -> value}}的结构,调用格式正好和’dict’对应的反过来,请读者自己思考
django-cors-headers 解决跨域问题
浏览器具有 “同源策略的限制”,导致 发送ajax请求 + 跨域 存在无法获取数据。
- 简单请求,发送一次请求。
- 复杂请求,先options请求做预检,然后再发送真正请求
1. pip安装
pip install django-cors-headers
2. 添加到setting的app中
1 | INSTALLED_APPS = ( |
3. 添加中间件
1 | MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10 |
4. setting下面添加下面的配置
1 | CORS_ALLOW_CREDENTIALS = True |
启动项目时,使用python manage.py runserver 0.0.0.0:8000





