作者:白宁超 2017年8月25日08:51:58 摘要:上文号称【最为简明实用的Django上手教程】介绍了django基本概念、配置和相关操作。相信通过上文的阅读,基本明白django运行机制和操作。假设你现在通过dome和相关书籍已经基本理解django这台机器的运行。下一步如何像asp.net、Jsp,PHP等常规网站开发,进行前后台交互呢?又如何采用较为简洁美观的前端框架进行设计呢?假设你需要配置多个数据库怎么办?静态文件单独存放需要哪些配置?针对这些配置有哪些便利?最后,假设你又是一名对数据开发很感兴趣的,且学过一些机器学习,数据挖掘,自然语言处理,云计算等技术之一,想挖掘分析数据并进行可视化,怎么办?本文就是针对这些问题开始的。(本文原创编著,转载注明出处:号称最为简明实用的Django上手教程(下)) 1 前景回顾
系统环境:WIN10 64bit 开发环境:sublime+Anaconda 数据库:Mysql 5.6.17 语言:python3.5 框架:django1.11+Bootstrap 可视化工具:Highchart|Echarts|plotly|Bokeh(采用Echarts) 2 静态文件配置操作
(1)静态static文件夹的配置。 在analysis文件夹下创建:analysis/static和analysis/templates文件夹,其中: ① static:包括,css,js,img,font,files等文件,使用时需要配置,页面开头添加{% load static %} ② templates:包含web的html静态页面,django1.10之后会默认识别 (2)打开xmjc_analysis/setting.py修改如下: 1 2 | STATIC_URL = '/static/'
STATIC_ROOT = os.path. join (BASE_DIR, "static" )
|
(3)打开xmjc_analysis/urls.py修改如下: 1 2 3 4 5 6 7 8 9 10 | # 配置加载静态页面
from django.conf import settings
from django.conf.urls. static import static
urlpatterns = [
url(r '^admin/' , admin.site.urls),
url(r '^index/$' , analysis_views.index,name= 'index' ),# 首页
]+ static (settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
(4) 在基模板(后文详细介绍)base页面开头添加{% load static %} (5 )xmjc_analysis/views.py修改如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | '' '
第一个页面
author:白宁超
site:http: //www.cnblogs.com/baiboy/
'' '
#coding:utf-8
from django.shortcuts import render
from django.http import HttpResponse
def index1(request):
name = request.GET[ 'name' ]
return HttpResponse(u "欢迎" +name+ ",进入第一个Django页面!" )
def index(request):
'' '项目统计分析平台主页' ''
return render(request, 'xmjc/index.html' ) # 首页
|
然后在xmjc_analysis/urls.py下添加访问 前端nav.html的超链接如下: 3 结合Bootstrap和页面模板前端设计
(1)什么是Bootstrap? Bootstrap是一组用于网站和网络应用程序开发的开源前端框架,包括HTML、CSS及JavaScript的框架,提供字体排印、窗体、按钮、导航及其他各种组件及Javascript扩展,旨在使动态网页和Web应用的开发更加容易。 Bootstrap是GitHub上面被标记为“Starred”次数排名第二最多的项目。Starred次数超过105,000,而分支次数超过了47,000次。 ps:前端框架,所有的插件依赖于 jQuery。所以必须在插件文件之前引用 jQuery ----维基百科 (2)Bootstrap学习资料 ① 官网下载地址:http:/// ② 中文网下载地址:http://www./ ③ w3c学习网站:https://www./bootstrap (3)引入 Bootstrap 1 2 3 4 | <!-- 引入 Bootstrap -->
<link href= "http://apps./libs/bootstrap/3.3.0/css/bootstrap.min.css" rel= "stylesheet" >
<!-- jQuery (Bootstrap 的 JavaScript 插件需要引入 jQuery) -->
<script src= "https://code./jquery.js" ></script>
|
1 2 3 4 | <!-- 精简版 -->
<link href= "http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel= "stylesheet" >
<script src= "//libs.baidu.com/jquery/2.0.0/jquery.min.js" ></script>
<script src= "//libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js" ></script>
|
具体知识点总结参考文章:【前端知识十分钟预览之学习札记】 (4)基于Bootstrap的页面模板设计 ① base.html 可以视作母模板,其中包括: {% load static %} 放在页面最顶层,用于识别静态文件 <head></head> 放入的编码和基本信息以及css文件(js文件放在页面尾部,提高用户体验) 侧边栏 引用③文件,便于修改和管理。 1 2 3 4 5 | <!-- 侧边栏 -->
<div id= "sidebar" class = "sidebar" >
{% include 'xmjc/nav.html' %}
</div>
<!-- /侧边栏 -->
|
页面内容设计 {% block content %}{% endblock %}占块符号 1 2 3 4 5 | <div class = "row col-lg-12" >
{% block content %}
<p>此处为主要内容</p>
{% endblock %}
</div>
|
底部 存放js文件 View Code ② content.html 内容页面,可以自己自由设计,本例子使用画布布局,展示几个可视化和表格的应用。 View Code ③ nav.html 导航页面设计,其中包括菜单折叠,子菜单等功能,超链接使用<a href="{% url 'index' %}"> View Code ④ 首页 index.html 调用①母版页面,自定义内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- 继承模板页 -->
{% extends 'xmjc/base.html' %}
<!-- 设置标题 -->
{% block title %}欢迎光临首页{% endblock %}
<!-- 覆盖内容块,自定义页面的内容 -->
{% block content %}
<!-- <p>覆盖内容块,自定义页面的内容</p> -->
{% include 'xmjc/content.html' %}
<script>
jQuery(document).ready(function() {
App.setPage( "base" ); //Set current page
App.init(); //Initialise plugins and elements
});
</script>
{% endblock %}
|
(5)运行服务器访问 页面效果: 至此,已经完成静态页面的配置工作。 4 多数据库配置联合操作
(1)打开xmjc_analysis/setting.py,有一个默认的数据库 default,我们可以再加一些其它的(这里你可以调用Access、SQLServer、Oracle等),比如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | '' '
配置Mysql数据库
2017年7月26日16:40:38
白宁超
'' '
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : 'test' ,
'USER' : 'test' ,
'PASSWORD' : 'test123' ,
'HOST' : 'localhost' ,
'PORT' : '3306' ,
},
'db1' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : '数据库名称' ,
'USER' : '用户名' ,
'PASSWORD' : '密码' ,
"HOST" : "localhost" , #本地
'PORT' : '3306' ,
},
'db2' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : '数据库名称' ,
'USER' : '用户名' ,
'PASSWORD' : '密码' ,
"HOST" : "服务器地址" ,
'PORT' : '3306' ,
},
}
|
1 2 3 4 5 6 7 | # use multi-database in django
DATABASE_ROUTERS = [ 'xmjc_analysis.database_router.DatabaseAppsRouter' ]
DATABASE_APPS_MAPPING = {
#'app_name':'database_name',
'app1' : 'db1' ,
'app2' : 'db2' ,
}
|
(2)在project_name文件夹中存放 database_router.py 文件,内容如下: View Code (3)使用操作 # 查询
YourModel.objects.using('db1').all()
# 保存 或 删除
user_obj.save(using='new_users')
user_obj.delete(using='legacy_users')
# 数据库同步
python manage.py migrate --database=db2
# 数据导出
python manage.py dumpdata app2 --database=db2 > app2_fixture.json
python manage.py dumpdata auth > auth_fixture.json
# 数据库导入
python manage.py loaddata app1_fixture.json --database=db1 5 数据挖掘与可视化技术
(1)设计思路 调用Echarts进行可视化展示,其中数据来源于两个部分,直接调用一方面数据库的结构化数据,另一个方面分析处理非结构化数据。最终处理成json形式,最后结合ajax进行数据绑定展示。这里【数据挖掘|文本处理技术】不详细介绍,主要展示思想和流程。期望展示三个案例:柱形图、饼形图、数据表格。 (2)数据前台展示,使用表单需要添加{%csrf_token%} (3)柱形图案例展示 新建页面ksh.html,添加如下代码 1 2 3 4 5 | <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div class = "row" >
<div class = "col-md-6 " id= "test1" style= "width:600px;height:400px;margin:0 auto" >
</div>
</div>
|
js代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /*
柱状图
白宁超
2017年8月4日17:20:42
*/
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById( 'test1' ));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:[ '销量' ]
},
xAxis: {
data: [ "衬衫" , "羊毛衫" , "雪纺衫" , "裤子" , "高跟鞋" , "袜子" ]
},
yAxis: {
},
series: [{
name: '销量' ,
type: 'bar' ,
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
|
json数据:上面案例采用官方数据,只需要配置data即可,这个data的json数据,你可以通过数据挖掘技术后文本或者数据库梳理出绑定起来即可。如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def xmjf(request):
lnav= "项目经费统计" # 可视化主题
lcontent = "这里是可视化主题的描述->项目经费统计" # 可视化主题的描述
data=[{ "value" : 55, "name" : '优先55' },
{ "value" : 70, "name" : '普通70' },
{ "value" : 25, "name" : "紧急25" }]
data1 = [{ "keys" : "衬衫" , "values" :5},
{ "keys" : "羊毛衫" , "values" :20},
{ "keys" : "雪纺衫" , "values" :36},
{ "keys" : "裤子" , "values" :10},
{ "keys" : "高跟鞋" , "values" :10},
{ "keys" : "袜子" , "values" :20}]
return render(request, 'xmjc/xmjf.html' ,{ 'lnav' :lnav, 'lcontent' :lcontent, 'data' :data, 'data1' :data1})
|
效果: (4)扇形图案例展示 新建页面ksh.html,添加如下代码 1 2 3 4 5 | <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div class = "row" >
<div class = "col-md-6 " id= "test2" style= "width:600px;height:400px;margin:0 auto" >
</div>
</div>
|
js代码 View Code 效果 (5)表格案例展示 新建页面ksh.html,添加如下代码 View Code 效果 6 将项目上传到github,进行项目管理(1)下载:Git 各平台安装包下载地址为:http:///downloads Windows 平台上安装包下载地址:http://msysgit./ (2)使用:Windows版Git下载安装,在开始菜单里找到Git->Git Bash (3)配置你的名字和Email地址。 1 2 | $ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
|
(4)创建版本库 1 2 3 4 | $ cd /E //你指定的个人盘符
$ mkdir mygit //创建版本库根目录
$ cd mygit //进入版本库目录
$ pwd //查看当前路径
|
(5) 将需要上传的项目拷贝到版本库即mygit里面,查看 (6)通过git init命令把目录变成Git可以管理的仓库 (7) mygit下创建xmjc_analysis,用命令git add告诉Git,把文件添加到仓库
(8)用命令git commit提交到仓库,-m本次提交的说明
(9)远程连接仓库 1 | git remote add originbnc git@github.com:username/bncgit.git
|
(10)推送 1 | git push -u originbnc master
|
(11)查看我的github 自此,完成全部初级学习,扩展处读者自行学习。
|