DJango内建模板转向jinja2的小脚本
2014-02-20 16:09
330 查看
import re,os def org(path=os.getcwd(),fs=None,preview=True): fs = fs or [] for root,dirs,files in os.walk(path): for f in files: if f[-4:]=='html': fp=os.path.join(root,f) s=open(fp,encoding='u8').read() for func in fs: s=func(s,preview) if not preview: open(fp,'w',encoding='u8').write(s) url_kwargs_reg=re.compile(r""" {%\s*url\s+ (?P<viewfunc>((?P<q1>['"]?)[\w:.]+(?P=q1))) (?P<kwargs>(\s+\w+\s*=\s*(?P<q2>['"]?)[.\w]+(?P=q2))*) \s*%}""",re.X) nv_reg=re.compile(r"""\s+ (?P<name>\w+) \s*=\s* (?P<value>(?P<q2>[\'"]?)[.\w]+(?P=q2)) """,re.X) def url_kwargs(text,preview=1): for old,new in [ (m.group(),'{%% url(%s,kwargs=dict(%s)) %%}'%( m.group('viewfunc'), ','.join(['%s=%s'%(n.group('name'),n.group('value')) for n in re.finditer(nv_reg,m.group('kwargs'))]), ) ) for m in re.finditer(url_kwargs_reg,text) ]: if preview: print('%s--->\n %s'%(old,new)) else: text=text.replace(old,new,1) return text url_args_reg=re.compile(r""" {%\s*url\s+ (?P<viewfunc>((?P<q1>['"]?)[\w:.]+(?P=q1))) (?P<args>(\s+(?P<q2>['"]?)[.\w]+(?P=q2))*) \s*%}""",re.X) def url_args(text,preview=1): for old,new in [ (m.group(),'{%% url(%s,args=(%s,)) %%}'%( m.group('viewfunc'), ','.join( m.group('args').split()), ) ) for m in re.finditer(url_args_reg,text) ]: if preview: print('%s--->\n %s'%(old,new)) else: text=text.replace(old,new,1) return text if __name__=='__main__': text=""" {% url viewname first =fir third= "thi" %} {% url "viewname" first = fir%} {% url 'viewname' first =fir second = 'sec' third ='thi' %} {% url 'funcname' first second 'third' %} {% url "funcname" first "third" %} {% url funcname first%} """ fs=[url_args,url_kwargs] org(fs=fs,preview=0)
相关文章推荐
- Django1.10配置Jinja2模板(20161130更新)
- 用jinja2替换Django的模板
- 更换Django默认的模板引擎为jinja2的实现方法
- 解决Django换用jinja2模板引擎后admin提示“TemplateDoesNotExist”
- python3之Django内置模板标签和过滤器
- Unity订制新建脚本模板
- django传值给模板, 再用JS接收并进行操作的实例
- 使用Django启动命令行及执行脚本的方法
- (Django)模板渲染方式
- django中模板models设置时间
- The Definitive Guide To Django 2 学习笔记(五) 第四章 模板 (一)基本模板系统
- 在python中应用Django的模板系统
- django之创建第3个项目:编写第一个模板文件
- unity 第三人称控制对象平移转向C#脚本(亲测有效)
- Ant脚本模板,仅供参考
- Django 模板查找机制
- Django框架之第三篇模板语法(重要!!!)
- Django1.4关于静态文件(css.js等)和模板路径的配置
- Flask jinja2模板注入思路总结
- 【自动化测试技术QTP基础系列十】---脚本模板