django与graphviz相结合

本文介绍了如何在Django项目中使用graphviz模块创建动态图形,并通过HTML展示静态图片,以及处理图片查看和新建图的视图和URL配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、思路

将jango的数据使用graphviz在前面进行展示。

二、导入graphviz模块

import datetime
from django.shortcuts import render,redirect
from django.urls import reverse
from graphviz import Digraph

三、html的引导页

1.使用表格方式,将static中的图像文件展示出来。

文件名:index.html

{% extends 'albums/base.html'%}
{% load static %}
{% block title%}
albums
{% endblock%}
{% block content%}
<div class="container">
    <div class="row">
        <a class="col-2 btn btn-lg btn-outline-primary" href="{% url 'albums:graph_create'%}">新建</a>
    </div>
    <table class="table table-striped table-hover">
        <thead>
            <th class="col-1">序号</th>
            <th class="col-3">图</th>
            <th class="col-3">名称</th>
            <th class="col-3">备注</th>
        </thead>
        <tbody>
            {% for r in result_list%}
            <tr>
                <td>{{forloop.counter}}</td>
                <td>
                   <a href="{% url 'albums:photo_look' r%}" target="_blank"> 
                    <img src="{% static 'albums/'|add:r %}" class="" width="200" alt="Image"></img>
                </a>
                </td>
                <td>{{r}}</td>
                <td></td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</div>
{% endblock%}

2.点击图像可以放大图像,注意 'albums/'|add:photo_name,使用是模板过滤器实现的字符相加。

文件名:photo_look.html

{% extends 'albums/base.html'%}
{% load static %}
{% block title%}
albums
{% endblock%}
{% block content%}
{{result_str}}
<div class="container">
    <img
        src="{% static 'albums/'|add:photo_name %}"
        class=""
        alt="Image"
    >hello</img>
</div>
{% endblock%}

三、views文件

1.index.py

from django.shortcuts import render
import os

def index(request):
    result_list = os.listdir('static/albums')

    result_list = [r for r in result_list if r.split('.')[-1] in('jpg','png')]
    print(result_list)
    result_str = 'albums is ok'
    return render(request,'albums/index.html',locals())

2,graph.py

import datetime
from django.shortcuts import render,redirect
from django.urls import reverse
from graphviz import Digraph
 
def graph_create(request):
    now_str = datetime.datetime.now().strftime('%m%d%H%M%S')
    photo_name=f'测试{now_str}'
    dot = Digraph()
    dot.node("1","Life's too short")
    dot.node("2","I learn Python")
    dot.edge('1','2')

    dot.render(f'static/albums/{photo_name}',format="png",view=False)
    return redirect(reverse('albums:index'),request)

3.photo.py,用于点击进放大图像

from django.shortcuts import render


def photo_look(request,photo_name):
    result_str = photo_name
    return render(request,'albums/photo_look.html',locals())

四、urls.py

from django.urls import path
from .views import index,photo,graph

app_name='albums'

urlpatterns = [
    path('',index.index,name='index'),
    path('photo_look/<str:photo_name>',photo.photo_look,name='photo_look'),
    path('graph_create',graph.graph_create,name='graph_create'),
    path('graph_create/<str:photo_name>',graph.graph_create,name='graph_create'),
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值