主要从以下这些方面依次介绍这次django实战经验:
- 数据处理
- django基本框架搭建
- sqlite3数据库
- Json数据
- Echart树状图
- Jquery 异步刷新
- laydate 日期查询
- 前后端交互
数据处理
从本地文件夹中获得所有源文件,使用pandas进行数据的读取与清洗,得到两个dataframe数据。将这两组Dataframe数据写入sqlite3数据库的两个表格中,并生成Echart tree map所需的json文件。使用spyder调试无误后,封装为自定义模块,为后续django调用做准备。
需要注意的一点是,如果打算通过django直接调用python自定义模块,需要将已经写好的自定义模块放入projectname/myapp/management/commands/文件目录下,已“from .modulefilename import modulename”方法导入本地
Django基本构架搭建
比较基础的django构架搭建方法在此不再重复。
1. models.py 定义数据模型
from django.db import models
# Create your models here.
class Cleanliness(models.Model):
Index = models.IntegerField(primary_key=True)
Standard = models.CharField(max_length=50)
Nr = models.CharField(max_length=50)
Time = models.DateTimeField()
Result = models.CharField(max_length=20)
class Opllist(models.Model):
Index = models.IntegerField(primary_key=True)
Date = models.DateTimeField()
Findings = models.CharField(max_length=50)
Responsible = models.CharField(max_length=20)
Station = models.CharField(max_length=20)
Category = models.CharField(max_length=10)
Risk = models.CharField(max_length=10)
数据库的写入与覆盖操作是使用如下模块执行的,网上对于这个方法有详细的介绍,其中也说过如果是数据库表格的覆盖操作,不建议使用这个方法的replace进行整体替代,而是推荐使用数据库本身的is_deleted方法进行,目前没有尝试过。但如果使用的是to_sql的replace方法,在models.py定义模型时,必须定义主键primary_key,否则在后期调试过程中,会出现数据无法写入数据库的错误。
#连接到数据库
#数据库文件是“test.db”
#如果数据库不存在的话,将会自动创建一个 数据库
db = sqlite3.connect(r"C:\Users\WAY1QIN\Desktop\Usecase\cleanliness VSD\VSD\VSDproject\cleanliness.db")
pd.io.sql.to_sql(df,"myapp_cleanliness",con=db,index=True,if_exists="replace")
print('df-success!')
db.close()
2. urls
url.py文件定义如下
from django.urls import path
from . import views #.意味着当前目录
urlpatterns = [
path('',views.index), #url(r'^$',views.index)
path('frame/',views.frame),
path('time/',views.time),
path('refresh/',views.refresh),
path('opl_chart/',views.opl_chart),
]
3. setting.py
setting.py文件配置,设置DATABASES建立与sqlite3数据库的连接, Static设置确保能够正确引用静态文件。
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['*',]
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
ROOT_URLCONF = 'VSDproject.urls'
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',
],
},
},
]
# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases
DATABASES = {
'default': {