首页 > 其他 > 详细

使用Jinjia2渲染配置文件

时间:2021-07-20 15:41:03      阅读:26      评论:0      收藏:0      [点我收藏+]

import jinja2
import yaml
import base64
import logging

template_str = """
SERVER_ENV={{ env_name }}
LOGGING_LEVEL={{ office_backend.logging_level }}
DB_ENGINE=django.db.backends.{{ office_database.engine }}
DB_HOST={{ office_database.host }}
DB_PORT={{ office_database.port }}
DB_USERNAME={{ office_database.username }}
DB_PASSWORD={{ office_database.password }}
DB_NAME={{ office_database.dbname }}
DB_RAC_NAME={{ office_database.db_rac_name }}
"""

def read_yaml_config(file_path):
    with open(file_path, "rb") as yaml_file:
        config = yaml.safe_load(yaml_file.read())
        return config


def func(input_file_path, output_file_path, template_str):
    template_input = read_yaml_config(input_file_path)

    logging.basicConfig()
    logger = logging.getLogger(‘logger‘)
    LoggingUndefined = jinja2.make_logging_undefined(logger=logger, base=jinja2.Undefined)

    try:
        env = jinja2.Environment(undefined=jinja2.StrictUndefined)
        template = env.from_string(template_str)
        output_config = template.render(template_input)

        with open(output_file_path, "wb") as output_file:
            output_file.write(output_config.encode("utf-8"))
    except jinja2.exceptions.UndefinedError as ex:
        print("Some variable is undefined")
        env = jinja2.Environment(undefined=LoggingUndefined)
        template = env.from_string(template_str)
        template.render(template_input)
        exit(1)

func("./configs/sample_main.yaml","./1.txt",template_str)

使用Jinjia2渲染配置文件

原文:https://www.cnblogs.com/li-gao-wang/p/15033280.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!