公司业务提供API数据接口调用,但开发没时间开发数据统计,写了一个python定时任务脚本每天做统计并发送统计结果于相关人员。解决了临时问题,查看历史调用量和精确时间点查寻等还需要人工统计。于是就想写一套页面统计展示的程序,给相关人员查寻使用。
公司主营业务:做网站、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出内丘免费做网站回馈大家。
环境Centos6.5+Python2.7.12+Django8.1;(注:Django8.1以后的版本与之间的版本差异比较大)
写这篇文章一是与大家一起分享,也是为以后自己查寻方便。
环境安装略......
# Create New Project "Consume"
~] django-admin.py startproject consume
~] cd consume
我们需要对两个业务项目的数据调用做统计,再创建两个业务APP;整个代码逻辑都在主项目consume中完成,两个业务项目主要提供数据库支持。
# Create professional work app
~] ./manage.py startapp work1
~] ./manage.py startapp work2
从上至下一项一项配置,我的配置标红,其它配置不做解释:
# Setup master configuration file
# Setup access permissions
ALLOWED_HOSTS = ["*"] // 项目放在内网,内部应用所以允许所有访问
# Add projessional work project application
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'consume', // 主项目
'work1', // 提供数据调用的业务项目
'work2', // 提供数据调用的业务项目
]
# Setup the path for template files
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',
],
},
},
]
#Setup database (两个业务项目用的是不同的数据库,这里是多库配置)
DATABASES = {
'default': { // 可以没有默认的数据库,但'default'配置必须存在
// 我这里需要用户登陆,使用单独的数据库,在本地
'ENGINE': 'django.db.backends.MySQL',
'NAME': '****',
'HOST': 'localhost',
'USER': '****',
'PORT': '3306',
'PASSWORD': '****',
},
// 下面两个是业务项目的数据库,不在本地
'work1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '****',
'HOST': '****',
'USER': '****',
'PORT': '3307',
'PASSWORD': '****',
},
'work2': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '****',
'HOST': '****',
'USER': '****',
'PORT': '3307',
'PASSWORD': '****',
}
}
# Setup the path for static files
STATIC_URL = '/static/' // Model: http://model.domain.com/static/
STATIC_ROOT = os.path.join(BASE_DIR, 'static') // 这里配置静态文件存放路径与模板文件同级
STATICFILES_DIRS = [
os.path.join(STATIC_ROOT, 'css'),
os.path.join(STATIC_ROOT, 'js'),
os.path.join(STATIC_ROOT, 'fonts'),
os.path.join(STATIC_ROOT, 'img'),
]
// 检索静态文件引擎配置
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
# 'django.contrib.staticfiles.finders.AppDirctoriesFinder',
]
多库的使用可以参考官方文档http://python.usyiyi.cn/translate/django_182/topics/db/multi-db.html。
# Multi database operation
同步数据:
./manage.py makemigrations // 生成同步数据文件,存放在应用的migrations目录下
./manage.py migrate --database work1 // 同步数据
从数据库反向生成models.py:./manage.py inspectdb --database work1 >consume/work1/models.py
查寻数据:models.work1.objects.using('work1').all()
// 多数据库操作必须指定操作的数据库,不指定默认为default库;这是一种简单的多库使用方法,也 // 可以配置数据库路由使用,可参考官方文档。
# Create the path for tamplates files and static files and code
~] pwd
/path/consume
~] mkdir templates static consume/script
~] tree -d
├── work1 // professional work1
│ └── migrations
├── consume // master project
│ ├── migrations
│ └── script // the code for the program
├── work2 // professional work2
│ └── migrations
├── logs // uwsgi log
├── static // static file; using bootstrap; reference:http://www.bootcss.com/
│ ├── css
│ ├── fonts
│ ├── img
│ └── js
├── templates // template files
└── tmp // temporary file and uwsgi pidfile
# Installaion uWSGI
~] pip install uWSGI // 我使用的版本是2.0.14; 配置文件/etc/uwsgid.ini
# 配置应用
~] touch consume/{models.py,views.py}
~] cat >>consume/apps.py< from __future__ import unicode_literals from django.apps import AppConfig class AntiFraudConfig(AppConfig): name = 'consume' EOF # 反向生成数据models.py文件 ~] ./manage.py inspectdb --database work1 >consume/work1/models.py ~] ./manage.py inspectdb --database work2 >consume/work2/models.py # 编写consume/models.py,设计用户登陆认证class ~] cat >>consume/models.py< from __future__ import unicode_literals from django.db import models # from datetime import datetime class User(models.Model): username = models.CharField(max_length=30, unique=True) password = models.CharField(max_length=50) createtime = models.DateTimeField(auto_now_add=True) updatetime = models.DateTimeField(auto_now=True) def __unicode__(self): return self.username EOF # 创建数据库并配置访问权限;略...... # 同步到数据库 ~] ./manage.py makemigrations ~] ./manage.py migrate // 这里没加--database参数,默认同步default库 # 配置consume/urls.py from django.conf.urls import url, include # from django.contrib import admin from . import views from django.conf import settings from django.conf.urls.static import static // Django-10配置静态文件生效 urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^$', views.index, name="Consume"), url(r'^login/', views.login, name="sign"), url(r'^logout/$', views.logout, name="logout"), url(r'^currentweek/$', views.currentWeek, name='CW'), url(r'^currentmonth/$', views.currentMonth, name='CM'), url(r'^lastweek/$', views.lastWeek, name='LW'), url(r'^lastmonth/$', views.lastMonth, name='LM'), url(r'^score/$', views.creditScore, name='S'), url(r'^score/(\S+)/', views.scoreClient, name='SC'), url(r'^anti/$', views.antiFraud, name='A'), url(r'^anti/(\S+)/', views.antiClient, name='AC'), url(r'^antifraud', include('anti_fraud.urls')), url(r'^creditscore', include('credit_score.urls')), ] + static(settings.STATIC_URL, document_root = settings.STATIC_ROOT) // 必须加上这行配置 // settings.py中的静态文件 // 配置才会生效 # 下载bootstrap到static并解压;略...... 开妈写代码............. 主页上可以做5个标签页上,常用固定时间段的数据调用查寻;Dashboard后面摭住的三个button是 两个项目和登陆用户。 主页效果如下图: 进入项目可以做详细查询,如下图: 详细查询页面效果如下图: 可根据时间段要求,针对某一个用户做详细查询,不再上图 OVER
新闻名称:django开发配置
文章源于:http://scgulin.cn/article/pecohc.html