3.6 配置文件拆分

我们之前的YuShuBook访问api分页获取数据的时候,count和start是写死的。现在来完善这一部分操作。

首先看我们之前的代码,接受了count,start两个参数

    @classmethod
    def search_by_key(cls, q, count=15, start=0):
        url = cls.search_by_key_url.format(q, count, start)
        return HTTP.get(url)

考虑以下几点: 1.我们的试图函数接受的参数是page,考虑到代码的封装性,应该尽可能的隐藏细节,我们应该把计算count,start的过程放到YuShuBook的search_by_key方法中来做

2.虽然计算start的方法很简单。但是这是一个单独的逻辑过程,不应该将这段过程放在访问api获取数据的方法中。而应该封装成一个方法,以方法名来代替这段逻辑

3.count的值应该放到配置文件中,这样方便修改。但是考虑到我们之前的配置DEGUG,IP,PORT等都属于私密配置,包括以后会使用的数据库信息等。而COUNT的值属于可公开的配置,所以应该把配置文件拆分成secure.py和settings.py。secure.py保存私有配置,在上传git的时候不应该上传此文件,settings.py是共有配置

下面来看修改完后的代码 yushu_book.py

...
...
# flask提供了获取当前app的方法
from flask import current_app
...
...
    @classmethod
    def search_by_key(cls, q, page=1):
        url = cls.search_by_key_url.format(q, current_app.config["PRE_PAGE"],
                                           cls.calculate_start(page))
        return HTTP.get(url)

    @staticmethod
    def calculate_start(page):
        return (page-1) * current_app.config["PRE_PAGE"]

app/web/settings.py

PRE_PAGE = 15

app/web/secure.py

DEBUG = True
HOST = "0.0.0.0"
PORT = 8090

app/__init__.py

def create_app():
    app = Flask(__name__)
    app.config.from_object("app.secure")
    app.config.from_object("app.settings")
    register_blueprint(app)

    return app

Last updated