这几天基本完成了在IPython notebook中显示Model关系图的功能,在MAC下工作良好,但是到了windows下,中文字段描述为乱码,主要原因是因为字体造成的。那么如何解决这个问题。在uliweb中,有两个地方会使用graphviz来生成svg图:命令行和IPython notebook环境中。对于命令行,我添加了可以通过命令行参数来传递字体名字的功能,于是可以在执行:
uliweb sqldot -tuser -Tsvg -o x.xvg -f"fontname"
通过 -f
参数来处理。但是在IPython notebook环境中,因为我只希望用户输入一个Model对象就显示,不希望采用调用方法的方式,于是就想到通过环境变量来处理。于是添加了在启动notebook环境时,注入一个 dot_fontname 的环境变量,如:
uliweb shell --notebook -Edot_fontname="fontname"
这样,在显示svg图时,会自动从环境变量获取,并传入相应的api来生成svg文件。
不过现在环境变量只在shell命令中实现了,下一步就把它做成全局的参数,让所有的命令行都可以使用这个参数。