在Django中应用Graphviz

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

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

 

在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!

 

是不是很简单呢

 

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

 

我在做的时候遇到几点

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值