flask框架之业务梳理

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)

两个结果都是 :

  

             

 

 

        

        

猜你喜欢

转载自www.cnblogs.com/wuxiaoshi/p/10276141.html