Python(Django)低代码开发-使用Jinja2模板语言生成代码
·
低代码开发展示


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'})
更多推荐



所有评论(0)