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
Was this helpful?