本文共 2049 字,大约阅读时间需要 6 分钟。
网站搭建笔记精简版-廖雪峰教程学习@[三川水祭]
仅作学习交流使用,将来的你会感谢现在拼命努力的自己!!!我们在部署webapp时候需要读取配置文件,配置文件中包含主机名、密码和端口等配置信息。廖老师在第6天的代码中编写了三个文件,分别是config_default.py、config_override.py和config.py。其中config_default.py
文件中存放的是开发环境的标准配置,config_override.py
存放的是部署到服务器时,需要修改数据库的host等信息,config.py
存放是将所有配置文件统一读取的代码。接下来附代码解释。
config.py
代码#!/usr/bin/env python3# -*- coding: utf-8 -*-'''Configuration'''__author__ = 'Michael Liao'# 直接导入config_default.py中的通用配置信息import config_defaultclass Dict(dict): ''' Simple dict but support access as x.y style. ''' def __init__(self, names=(), values=(), **kw): super(Dict, self).__init__(**kw) for k, v in zip(names, values): self[k] = v def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object has no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = value# 将两个配置文件合并的代码def merge(defaults, override): r = {} for k, v in defaults.items(): if k in override: if isinstance(v, dict): r[k] = merge(v, override[k]) else: r[k] = override[k] else: r[k] = v return r# 将配置文件返回为字典def toDict(d): D = Dict() for k, v in d.items(): D[k] = toDict(v) if isinstance(v, dict) else v return Dconfigs = config_default.configstry: import config_override configs = merge(configs, config_override.configs)except ImportError: passconfigs = toDict(configs)
config_default.py
代码#!/usr/bin/env python3# -*- coding: utf-8 -*-'''Default configurations.'''__author__ = 'Michael Liao'configs = { 'debug': True, 'db': { 'host': '127.0.0.1', 'port': 3306, 'user': 'www', #改为自己的用户名 'password': 'www', #改为自己的密码 'db': 'awesome' #数据库的名字 }, 'session': { 'secret': 'Awesome' }}
config_override.py
代码#!/usr/bin/env python3# -*- coding: utf-8 -*-'''Override configurations.'''__author__ = 'Michael Liao'configs = { 'db': { 'host': '127.0.0.1' #本机的ip }}
参考博客
转载地址:http://imlxi.baihongyu.com/