• Django历史数据曲线开发


    B/S架构开发

    使用框架:django2.1.4,Highcharts 7.1

    数据库:PostgreSQL 10.6

     settings.py

    1 DATABASES = {
    2     'default': {
    3         'ENGINE': 'django.db.backends.postgresql',
    4         'HOST': '127.0.0.1',
    5         'PORT': '5432',
    6         'NAME': 'mydb',
    7         'USER': 'postgres',
    8         'PASSWORD': 'password',
    9     }
     1 # Internationalization
     2 # https://docs.djangoproject.com/en/2.1/topics/i18n/
     3 
     4 LANGUAGE_CODE = 'en-us'
     5 
     6 TIME_ZONE = 'Asia/Shanghai'
     7 
     8 USE_I18N = True
     9 
    10 USE_L10N = True
    11 
    12 USE_TZ = True

    models.py

     1 from django.db import models
     2 
     3 # Create your models here.
     4 class Data1(models.Model):
     5     time = models.DateTimeField(auto_now=True)
     6     tag1 = models.FloatField(default=0.0)
     7     tag2 = models.FloatField(default=0.0)
     8     tag3 = models.FloatField(default=0.0)
     9     
    10 class TableInfo(models.Model):
    11     tbl_name = models.CharField(max_length=20)
    12     field_name = models.CharField(max_length=20)
    13     
    14 class TagInfo(models.Model):
    15     tag_name = models.CharField(max_length=20)
    16     tag_description = models.CharField(max_length=50)
    17     tbl = models.ForeignKey("TableInfo",on_delete=models.CASCADE)

    base.html

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title>{% block title %} Default title{% endblock %}</title>
     5     {% block js_css %}{% endblock %}
     6 </head>
     7 <body>
     8     {% block content %}{% endblock %}
     9 </body>
    10 </html>

    spline.html

     1 {% extends "base.html" %}
     2 
     3 {% block title %}Data Display{% endblock %}
     4 
     5 {% block js_css %}
     6 <script type="text/javascript" src="/static/highcharts.js"></script> 
     7 <script type ="text/javascript" src="/static/modules/series-label.js"></script>
     8 <script type ="text/javascript" src="/static/modules/exporting.js"></script>
     9 
    10 <script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script>
    11 <style type="text/css">
    12 #container {
    13     min-width: 310px;
    14     max-width: 1200px;
    15     height: 600px;
    16     margin: 0 auto
    17 }
    18 </style>
    19 {% endblock %}
    20 
    21 {% block content %}
    22 <div id="container"></div>
    23 <script type="text/javascript">
    24 
    25 Highcharts.chart('container', {
    26     chart:{
    27         type:'spline'
    28     },
    29     title: {
    30         text: 'History Curve of Demo Tag 1,2,3'
    31     },
    32 
    33     subtitle: {
    34         text: 'History Demo'
    35     },
    36 
    37     xAxis:{
    38         title:{
    39             text:'Date Time'
    40         },
    41         categories: {{tt|safe}}
    42     },
    43 
    44     yAxis: {
    45         title: {
    46             text: 'Value of Tag'
    47         },
    48         
    49     },
    50     legend: {
    51         layout: 'vertical',
    52         align: 'right',
    53         verticalAlign: 'middle'
    54     },
    55 
    56      credits:{
    57          enabled:false
    58      },
    59      
    60     series: [{
    61         name: 'tag1',
    62         data: {{tag1}}
    63     }, {
    64         name: 'tag2',
    65         data:{{tag2}}
    66     }, {
    67         name: 'tag3',
    68         data: {{tag3}}
    69     }],
    70 
    71     responsive: {
    72         rules: [{
    73             condition: {
    74                 maxWidth: 500
    75             },
    76             chartOptions: {
    77                 legend: {
    78                     layout: 'horizontal',
    79                     align: 'center',
    80                     verticalAlign: 'bottom'
    81                 }
    82             }
    83         }]
    84     }
    85 
    86 });
    87 </script>
    88 
    89 {% endblock %}

    views.py

     1 def addrecord(request):
     2     t1 = random.uniform(0,999)
     3     t2 = random.uniform(0,999)
     4     t3 = random.uniform(0,999)
     5     tt = timezone.now()
     6     
     7     models.Data1.objects.create(tag1=t1,tag2=t2,tag3=t3)
     8     msg="Add Record: %s,%f,%f,%f"%(tt,t1,t2,t3)
     9     return HttpResponse(msg)
    10 
    11 
    12 def display(request):
    13 #     tags = models.Data1.objects.filter(time__lt=end_datetime,time__gt=start_datetime)
    14     tags = models.Data1.objects.all()
    15     context = {
    16         "tags":tags
    17         }
    18     return render(request, "learn/data1.html", context)
    19 
    20 def getdata(request):
    21     tags = models.Data1.objects.all()
    22     context = {
    23         "tags":tags
    24         }
    25     return render(request, "learn/data1.html", context)
     1 def spline(request):
     2     start_date = datetime.datetime(2019,1,10,0,0,0)
     3     end_date = datetime.datetime.today()
     4     tags = models.Data1.objects.filter(time__lt=end_date,time__gt=start_date)
     5     data=[[]]
     6     for i in range(0,10):
     7         data.append([])
     8     for tag in tags:
     9 #         data[0].append((tag.time+datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'))
    10         data[0].append(timezone.localtime(tag.time).strftime('%Y-%m-%d %H:%M:%S'))
    11         data[1].append(tag.tag1)
    12         data[2].append(tag.tag2)
    13         data[3].append(tag.tag3)
    14     context = {
    15         "tt":data[0],
    16         "tag1":data[1],
    17         "tag2":data[2],
    18         "tag3":data[3]
    19         }
    20     return render(request, "learn/spline.html", context)

    urls.py

     1 from django.urls import  path
     2 from . import views
     3 
     4 urlpatterns = [
     5     path('', views.index,name='index'),
     6     path('addrecord/',views.addrecord,name='addrecord'),
     7     path('display/',views.display,name='display'),
     8     path('getdata/',views.getdata,name='getdata'),
     9     path('spline/',views.spline,name='spline'),
    10 ]
  • 相关阅读:
    LOJ.2721.[NOI2018]屠龙勇士(扩展CRT 扩展欧几里得)
    Codeforces.959E.Mahmoud and Ehab and the xor-MST(思路)
    BZOJ.3058.四叶草魔杖(Kruskal 状压DP)
    Codeforces.838E.Convex Countour(区间DP)
    Codeforces.838D.Airplane Arrangements(思路)
    Codeforces.997C.Sky Full of Stars(容斥 计数)
    Codeforces.786B.Legacy(线段树优化建图 最短路Dijkstra)
    BZOJ.3759.Hungergame(博弈论 线性基)
    LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)
    序列化二叉树
  • 原文地址:https://www.cnblogs.com/wujianming/p/10249462.html
Copyright © 2020-2023  润新知