读书人

在Django中施用Graphviz

发布时间: 2012-10-06 17:34:01 作者: rapoo

在Django中应用Graphviz

前阵子实习,在项目中用Graphviz画依赖图,感觉效果不错。在这里分享下。

具体Graphviz的介绍,把基本的命令行语句,Gallery的例子看看,马上就可以上手了。在Django中施用Graphviz

?

在Django中应用Graphviz也相当简单,应用Template可以写出很漂亮的代码,结构十分清晰。

?

首先定义一个模板:

?

?

file_template = """    {{file.name}}[style=filled, color=green];    {% if file.dependcy_app %}        node[color=deepskyblue, style=filled]        {{file.dependcy_app.name}}->{{file.name}};    {% endif %}    {% if file.depency_resource.all %}        {% for app in file.depency_resource.all %}                {{file.name}}->{{app.name}}        {% endfor%}    {% endif %} """

?然后渲染模板

request = Context({'file': file,})        dot = head_template        t = Template(file_template)        dot += '\n' + t.render(request) + tail_template        generate(file, dot)

?生成图片

file = open(filename, 'w')file.write(dot)file.close()cmd = "%(path)s/dot -Tpng %(input)s -o               %(output)s" %{'path':bin_path,   'input':filename,  'output':outfilename} os.system(cmd)

?ok done!

?

是不是很简单呢在Django中施用Graphviz

?

具体效果可以看官网上的,我这里就不贴图了。

?

我在做的时候遇到几点

    subgraph的名称好像只能用cluster开头假如有两个a->b的话,就有2条线,如果不想要的话,graph前面加上个strict就行了生成图片的格式是svg的话,可以点击跳转~~cool可以为图片生成一个title

唯一的缺点好像是官方的讨论不够活跃啊。。不过google一下还是能解决的!

?

读书人网 >Web前端

热点推荐