低代码开发展示

在这里插入图片描述
在这里插入图片描述

Jinja

安装

pip install jinja2

使用

# -*- coding: utf-8 -*-
# @File    : coder.py
# @Desc    : code for jinja2
# @Version : 1.0.0
# @Author  : Samle

import os, sys, re
from jinja2 import Environment, FileSystemLoader

# 自定义过滤器
# 小写并用下划线分隔单词
def snake_case(value):
    value = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', value)
    return value.lower()
# 小驼峰
def camel_case(value):
    # 首字母小写
    value = re.sub(r'(_\w)', lambda x: x.group(1)[1:].upper(), value)
    return value[0].lower() + value[1:]
# 大驼峰
def pascal_case(value):
    # 首字母大写
    value = re.sub(r'(_\w)', lambda x: x.group(1)[1:].upper(), value)
    return value[0].upper() + value[1:]

# 首字母转换为大写,其余字母转换为小写
def capitalize(value):
    return value.capitalize

env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
env.filters['snake_case'] = snake_case
env.filters['camel_case'] = camel_case
env.filters['pascal_case'] = pascal_case

# 创建基础字段
def writer_fields(field):
    tmp = env.get_template('field.py.jinja2')
    out = tmp.render(field=field)
    print(out)

# 创建模型文件
def writer_models(appName, fields, dicts, path="tests/"):
    tmp = env.get_template('models.py.jinja2')
    out = tmp.render(classNames=fields, verboseNames=dicts)
    # 将渲染结果写入文件
    with open(path + 'models.py', 'w', encoding='utf-8') as f:
        f.write(out)
    print("生成成功 ==> " + path + 'models.py')


# 测试
# class TestField():
#     def __init__(self, name, fieldType, vName, choicesDatas):
#         self.name = name
#         self.fieldType = fieldType
#         self.vName = vName
#         self.choicesDatas = choicesDatas
# field1 = TestField("name", "models.CharField", "名称", {})
# field2 = TestField("status", "models.ChoicesField", "状态", {"0": "未开始", "1": "进行中", "2": "已完成"})
# writer_fields(field1)
# writer_fields(field2)
# writer_models('test', ['test1', 'test2'], {'test1': '测试1', 'test2': '测试2'})

更多推荐