1、项目创建
# 新建一个文件夹DjangoProjects
# 切换到需要的文件夹创建虚拟环境
C:\Projects\DjangoProjects>python -m venv test_venv
# 激活虚拟环境
C:\Projects\DjangoProjects>test_venv\Scripts\activate.bat
# 激活后会在前面添加虚拟环境作为前缀,如下所示
(test_venv) C:\Projects\DjangoProjects>
# 安装django,会安装到虚拟环境的site-packages中
(test_venv) C:\Projects\DjangoProjects>pip3 install django
# 新建项目
(test_venv) C:\Projects\DjangoProjects>django-admin.py startproject testsite
# 这时就可以启动开发服务器了,注意先切换到项目文件夹
(test_venv) C:\Projects\DjangoProjects>cd testsite
(test_venv) C:\Projects\DjangoProjects\testsite>python manage.py runserver
# 创建应用
(test_venv) C:\Projects\DjangoProjects\testsite>python manage.py startapp testblog
2、添加常用文件夹
一般名称为static与templates,在新版本中需要手动添加,static用于静态资源,templates用于存放模板文件。以下是创建好之后的目录,注意在新建的项目testsite目录(上面创建时使用的名称)下面,还会有一个testsite文件夹。
3、一个用于说明如何使用django的例子
结合上面创建的目录和应用,这个例子会显示如何从mongodb中提取数据,并在前端怎样使用highcharts将数据呈现出来。
django的用法比较简单,理解关键的文件是重点。
1> settings.py文件
顾名思义,这是django的设置文件,对于这个例子来说,位于testsite目录所包含的testsite文件夹中。
STATIC_URL = '/static/' # 说明使用static文件夹作为静态资源的文件夹 STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) # 如何找到static文件夹,这个必须有,要不然Django是找不到文件夹的位置的
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 添加,如何找到templates文件夹
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 从略...
},
from mongoengine import connect # 第一个参数是数据库
connect('test', host='192.168.1.108', port=27017)
# 如需验证和指定主机名
# connect('blog', host='192.168.125.1', username='root', password='12345')
以上给出了部分代码,注意上面蓝色显示的部分,一方面,表明了上面创建的static与templates文件夹是如何使用的,另一方面表明了连接mongodb的一种方式。
注意使用mongoengine需要先进行安装: pip3 install mongoengine
2> urls.py
路由在这个文件中设置,文件位于testsite目录所包含的testsite文件夹中。
from django.conf.urls import url
from django.contrib import admin
# 注意这两种写法
from testblog import views
from testblog.views import house, chart
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^house/', house),
url(r'^chart/', chart),
]
在上面的url中,前面一个是正则表达式,后面一个是views.py(下面介绍)中的函数。
例如,当我们访问 127.0.0.1:8000/chart/ 这个页面时,django会通过views.py中设置的自定义的chart函数来处理请求。
3> views.py
这个文件用来封装处理请求的各种函数,本项目系统会自动创建在位于testblog文件目录下面,testblog是上面创建的应用名称。
from django.shortcuts import render
from django.core.paginator import Paginator
from testblog.models import SalesInfo
# Create your views here.
# 地区销售总额
# 因为要构建highcharts需要的数据,地区要有固定的顺序,需要排序
# x轴:地区
# y轴:销售额
def area_sales(cate):
pipeline = [
{'$match': {'$and': [{'category': {'$in':cate}}, {'province': {'$in': ['山东','浙江','江苏','河北','辽宁']}}]}},
{'$group': { '_id': '$province', 'sum_sales': {'$sum': {'$multiply': ['$price', '$quantity'] }}}},
{'$sort': {'_id': 1}}
]
# SalesInfo在models中设置
for i in SalesInfo._get_collection().aggregate(pipeline):
print(i)
data = {
'name': i['_id'],
'y': i['sum_sales']
}
yield data
# 对于各地区的排序,与种类无关,此处传了参数“粮食”,使用其他种类是一样的
c=[i['name'] for i in area_sales(['粮食'])]
# 也可以使用下面的方式获取排序
cate = ['山东','浙江','江苏','河北','辽宁']
b = sorted(cate)
# 用于y轴的数据
sg_sales = [i for i in area_sales(['水果'])]
ls_sales = [i for i in area_sales(['粮食'])]
sc_sales = [i for i in area_sales(['蔬菜'])]
def chart(request):
context = {
'sg_sales': sg_sales,
'ls_sales': ls_