Django ajax MYSQL Highcharts<1>
Another small project with django/Ajax/Mysql/Highcharts. 看下效果图 - delivery dashboard .嘿嘿 是不是还蛮好看的。

废话不多说。在过程中遇到的问题总结:
1. Ajax URL 请求403 错误:
是由于CSRF(Cross-site request forgery跨站请求伪造请求保护)的原因。目前有三种方法
1.1 我使用的是@csrf_exempt加在相应的view前,但是这样不安全,是关闭csrf保护功能。
(view里引入包,setting里加入MIDDLEWARE_CLASSES
view.py:
from django.views.decorators.csrf import csrf_exempt setting.py:
'django.middleware.csrf.CsrfViewMiddleware',
1.2 好像是在模板提交区域里加{% csrf_token %}?不是特别明白,我先建起来,这个以后再研究,pending
1.3 略
2. MYSQL/JSON 日期格式的问题
因为django从mysql里读取出来的日期格式为datetime.date(2015, 4, 28),对于转换成JSON到前台或者其他操作都是有问题的
def date_handler(obj):
return obj.isoformat() if hasattr(obj, 'isoformat') else obj
#hasattr()方法是查找是否包含该属性,返回为boolean类型
simplejson.dumps(数组,default=date_handler)
simplejson.loads(数组)
上面date.isoformat()的意思是 返回格式如'YYYY-MM-DD' 的字符串。 因为Python没有像R一样的apply功能,目前暂时使用json里function将数组里的数据转换成
'YYYY-MM-DD' 的字符串
3. 使用2个不一样的数据库:
在setting中设置,比如加一个新的other(使用的是test数据库):在view里运行raw_query时,
<table_name>.objects.using('other').raw(raw_sql_line)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'alert',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '',
},
'other': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
4.Highcharts/AJAX的数据传输问题
1. 除了字符串,但似乎带结构的比如数组,字典都无法传到前台,唯独JSON数据结构。所以没办法后台view使用json.dump先把数据结构化。
然后在前台使用{{变量|safe}}的方式可以将其传入前端。
2. Ajax/highcharts动态刷新
因为render_to_response 只能返回html的数据对于Javascript框架的hcharts不好操作。这里我们可以使用 HttpResponse
from django.http import HttpResponse
return HttpResponse(<JSON_DATA>,content_type='application/json')
觉得比较神奇的事情是highcharts里传入的居然直接是JSON数据格式的,之前我用jsonstrify来转换成string一直不行,最后直接传入居!然!可!以!
前台js/ajax:
$.post("/cn_aj_res/",{"p":p},function(data){
$('#container-top').highcharts(data);
}); 后台view.py:
cn_json={'title': {'text': '',},'xAxis': {'categories': 变量,'tickInterval': 1 },'yAxis': {'title': {'text': 'Missing SLA Silo number'},'min':0,'max':60,'plotLines': [{'value': 0,'width': 1,'color': '#808080',}]},'legend': {'layout': 'vertical','align': 'right','verticalAlign': 'middle','borderWidth': 0},'series': [{'name': 'Include Weekend','data': 变量},{'name': 'Exclude Weekend','data': 变量}]}
#注意此处的变量不可以是JSON格式的,否则之后的整个cn_json转成json时,会有问题,如果变量之前是json,先json.loads成普通
cn_json = simplejson.dumps(cn_json)
return HttpResponse(cn_json,content_type='application/json')
5. JSON数据真的是屌。。
5.1 比如你想传几组数据到前台,把数据都合并到一个JSON对象中,再分别在前台进行调用。比如:
#后台view.py
json_data ={'cn_json_line':cn_json_line}
json_data = simplejson.dumps(json_data)
return HttpResponse(json_data,content_type='application/json')
#前台引用变量时
$('#container-top').highcharts(data.cn_json_line);
5.2 highchart_pie数据:
v_pie=simplejson.dumps(v_pie.items())
v_pie = simplejson.loads(v_pie)
需要JSON函数导一下,我也觉得好奇怪。但是如果你不搞,一些字符前面会有 "\" 在前面,会然Highchart显示不出来,好奇怪!
6. not enough arguments for format string
%Y%M%D 应该写成 "%%Y-%%m-%%d"
Django ajax MYSQL Highcharts<1>的更多相关文章
- Django+Ajax+Mysql实现数据库数据的展示
最近老师让搞一个系统,仅仅展示一下数据库的数据 在做海底捞时,是交接的师兄的项目,用的语言是java,框架是SSM(Spring.SpringMVC.MyBatis),这次我准备用Python写,前端 ...
- python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...
- python——django使用mysql数据库(一)
之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...
- django 的mysql数据配置
原地址:http://blog.csdn.net/gamesofsailing/article/details/21465327 在成功安装python-mysql后,开始配置django的mysql ...
- Django配置mysql
我的环境为windows10+pyhton3.6+Django1.11.4 由于mysqldb不支持python3,所以django连接MySQL就不能再使用mysqldb了.故而选择了mysqlcl ...
- Django连接mysql数据库
1.app中对应的models.py配置相关表结构信息 from django.db import models class Question(models.Model): question_text ...
- django ajax练习
这几天遇到了django ajax请求出错的问题,总结一下 前端js:我这里创建的是一个字典格式的数据,前端js收到字典之后也是要用字典的形式去解包后台传送过来的数据,比如我下面的写法:data['s ...
- 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)
Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...
- Django 连接mysql数据库中文乱码
Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566 版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...
随机推荐
- 深入理解JavaScript系列(转自汤姆大叔)
深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力. 深入理解JavaScript系列(1):编写高质量JavaScript ...
- Java druid
1.ConnectionFactory (添加引用:druid-1.0.1.jar) package nankang.test; import java.sql.Connection; import ...
- 1.4Linux内核版本号的定义规则
Linux内核版本号的组成: (1)主版本号: (2)次版本号: (3)修订版本号: (4)微调版本号: (5)为特定的Linux系统特别调校的描述: 例子:2.6.29.7-flykernel-12 ...
- static 在多台下的特性
被static修饰的方法不具备多台的特性,因为这个时候,该方法已经不具备"后期绑定"的性质了,也就是说,基类的引用就算指向导出类,调用的static的方法还是用基类的. 如果要调用 ...
- 替换 PDF 文字
1.从http://pan.baidu.com/s/1pJlVBqN下载Foxit Phantom.exe: 2.安装这个软件: ① 弹出这个对话框时选择“运行”: ② 授权协议选择“同意”: ③ 选 ...
- 基本的Web控件四
基本的Web控件用法二 ListBox控件 页面布局: <div> <h1>ListBox控件</h1> 学生列表: <br/> <asp:Lis ...
- YARN内存使用优化配置
在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考 ...
- php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL
今天遇到一个问题,json_decode解析json数据返回null,试了各种方法都不行,最后发现,原来是json文件编码的问题. 当json_decode解析utf-8带BOM格式的json数据时, ...
- Lua 练习中的Bug 以及日志
使用 Lua 中的table.getn获得数组的table的长度:运行失败-- > t ={1,2,3 } > print(table.getn(t)) stdin:1: attempt ...
- C++读入两个参数
题目内容:编写程序计算两个整数的差. 输入描述:输入数据含有不超过50个整数对,每个整数队及每对整数的运算结果都不会超过231或-231. 输出描述:对于每次读入的一对整数,输出前者减去后者的差.每个 ...