Django静态展示Pyecharts图表数据

之前动态展示的例子发现其实index.html模板中用的还是echarts渲染的,view.py视图下使用pyecharts生成json。index.html中的JavaScript去请求json数据,请求响应结果为success后通过setOption进行解析data字段下的数据绘制图表。

安装环境和动态展示示例参考如下:

Django动态展示Pyecharts图表数据_grfstc的博客-优快云博客

本静态展示示例使用的是Pyecharts的render方法进行渲染。

1. 新建一个 Django 项目

命令行中输入以下命令

django-admin startproject pyecharts_django_demo

创建一个应用程序

python manage.py startapp demo

效果如下:

创建完之后,在 Pycharm 中打开该项目,当然你也可以直接在 Pycharm 中创建

同时在pyecharts_django_demo/settings.py中注册应用程序INSTALLED_APPS中添加应用程序demo

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo',
]

并配置模板路径

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

pyecharts_django_demo/urls.py中新增demo.urls

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('demo/', include('demo.urls')),
]

2. 新建项目 urls 文件

新建demo/urls.py文件,配置路由:

from django.urls import path

from . import views

urlpatterns = [
    path('index4/', views.index4, name='demoIndex'),
]

3. 编辑视图函数

demo/views.py如下:

from django.shortcuts import render
from django.http import HttpResponse
 
 
from pyecharts import options as opts
from pyecharts.charts import Bar, Map
from pyecharts.faker import Faker
 
 
# Create your views here.
 
def index4(request):
    bar_plot = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))      # 设置主题
        .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
        .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
        .add_yaxis("商家B", [15, 25, 16, 55, 48, 8])
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    bar_plot = bar_plot.render_embed()
    world_map = (
        Map(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))      # 设置主题
        .add("", [list(z) for z in zip(Faker.country, Faker.values())], "world",is_map_symbol_show=False,is_roam=False)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-世界地图"),
        visualmap_opts=opts.VisualMapOpts(max_=200))
    )
    world_map = world_map.render_embed()

    context = {'bar_plot_html':bar_plot,'world_map_html':world_map}
    return render(request,'index4.html',context=context)

4. 配置模板文件

在项目根目录下创建templates目录,创建templates/index4.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>pyecharts加Django的小例子</title>
        <!-- CSS only -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.0/dist/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <h1 style="color: crimson;">你好吗?</h1>
            {{ bar_plot_html | safe }}
        </div>
        <br>
        <div class="container">
            {{ world_map_html | safe }}
        </div>
    </body>
</html>

“| safe” 过滤器关闭自动转义,详情可以查看关于Django的render函数的参数和模板语言转义处理_grfstc的博客-优快云博客文章中的Django模板语言转义处理

5. 运行服务

python manang.py runserver

打开http://127.0.0.1:8000/demo/index4/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值