1.在接手一个项目之前,我们需要对以下几点做一个详细的了解:
1.研发项目有什么样的背景?
2.我要开发哪些功能模块?
3.前期调研,包括 技术架构,语言选型,框架选型 (比如 python版本,nginx版本,mysql版本)
4.参考第三方产品(免费?付费?)
5.以及项目开发时间,测试时间,上线时间的节点?
6.搭建服务 (版本控制器,测试服务器)
7.写代码
2.在一个项目开始前 是有一个产品文档或者产品原型
我们需要对每个模块的内容进行了解和熟悉,假如说我们运营人员 已经准备好一个电影叫 《摩天营救》
那么我们在 影视名称里 输入 摩天营救 然后点击 获取信息 ,那么现在问题来了,我们是在哪里获取信息呢?
产品原型中已经说明 是在豆瓣api 上获取信息,那么豆瓣会给我们提供一个获取电影信息的一个api接口。
什么是api接口? api接口 和 interface接口 有什么区别?
api (Application Programming Interface,应用程序编程接口 )
interface (interface是面向对象编程语言中接口操作的关键字)
从狭义上讲,接口指的是借由 interface 定义的结构,接口中只对方法做定义,不做实现。具体实现由最终实现接口的类提供。
从广义上讲,接口是应用程序和模块之间相互沟通的方式。
豆瓣给我们提供了一个获取电影详细信息的一个接口
请求协议:https
请求方式: GET
请求地址: https://api.douban.com/v2/movie/search
请求参数:
start : 数据的开始项
count:单页条数
q:要搜索的电影关键字
tag:要搜索的电影的标签
比如我想获取电影 《摩天营救》的详细信息,我只需要在浏览器上输入 https://api.douban.com/v2/movie/search?q=摩天营救 这样就可以获取这个电影的详细信息了
下面把请求电影详细信息嵌入程序中
安装requests模块
程序代码如下:
输出结果:
这样做,可以满足我们的功能要求,但是与python的简洁优雅相违背,所以需要提取一个请求文件(httper.py),这个文件只是基于requests类深度封装的一个方法
这样就精简了代码,看着比之前的清爽一点,我们在看看httper.py
问题:普通类方法 和 @classmethod 和 @staticmethod 和 @property 的区别?
从定义方式上来说:
普通类方法:普通类方法是通过self隐式的传入当前类的实例。
@classmethod:@classmethod修饰的方法class_foo() 需要通过cls传递当前的类。
@staticmethod: @staticmethod修饰的方法static_foo() 修饰的方法与普通函数一样,但是这个方法貌似和这个类关系不是很密切,因为根本就用不上类(实例)
@property:就是将 get/set 方法装饰一下形成了一个装饰器
从绑定对象上来说:
普通类方法: 普通类方法绑定在一个类的实例上
@classmethod: @classmethod 的方法绑定在一个类上
@staticmethod:@staticmethod 没有参数绑定
调用方式上来说:
普通方法: foo() 可以通过实例化后的self去调用
类方法:class_foo() 可以通过类对象或者对象的实例去调用
静态方法: static_foo() 通过类对象或者对象实例去调用
继承或重写与普通函数一样
问题,@staticmethod 修饰的方法函数与普通的类外方法相比,感觉都一样,那什么需要静态方法,什么时候需要类外方法呢?
@staticmethod:是把函数嵌入到类中的一种方式,函数属于类,同时表明函数不需要访问这个类,通过子类的继承,能更好的组织代码,保证代码的风格。
在正式开发中,很多的类外函数平铺在一起,并不是一个很好的习惯。首先给人的感觉不是很清爽,代码分布在各个片段,可能维护起来也相对麻烦
通过上面的实例 我们已经从豆瓣上获取关于《摩天营救》的相关信息了,我们这里需要这部电影的字段
影视名称
副标题
视频中文名
豆瓣评分
导演
编剧
主演
类型
制片国家/地区
语言
上映时间
片长
又名
简介
我们将获取上述的信息后,怎样拼成一个结构给前端或者是调用给你的人呢?
答案是 也同样返回一个json
我们学过 json
代码可能这样写
import json info = {'导演':'王小二','编剧':'陈小白','主演':['哪吒','葫芦娃','孙悟空','沙和尚']} return json.dumps(info)
这样写可以吗?如果说只是为了实现功能,可以,一点问题都没有,但是为了代码的简洁与干练,以及后期维护起来方便,flask为我们提供提供了一个方法 jsonify
用法:
from flask import Flask,jsonify app = Flask(__name__) @app.route('/index') def index1(): info = {'导演':'王小二','编剧':'陈小白','主演':['哪吒','葫芦娃','孙悟空','沙和尚']} return jsonify(info)
两个结果都是 :