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 ]