django开发配置
admin
2023-05-28 03:01:01
0

    公司业务提供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

相关内容

热门资讯

美国国内掀起反AI中心浪潮,特... 据南华早报8月5日报道,美国总统特朗普无端指责中国助长了美国全国范围内日益高涨的反对人工智能(AI)...
香港资深演员黎彼得去世,曾参演... 据港媒,香港乐坛殿堂级填词人、资深演员黎彼得于8月5日上午因病离世,终年76岁。好友钟志光透露黎彼得...
等不到MacBook Air的... 每年返校季,MacBook Air几乎都是学生党最稳妥的答案。 它足够轻巧、安静,性能也足以应付大多...
统筹6G星地融合,我国成立星地... 2026年7月30日,在工业和信息化部信息通信发展司指导下,IMT-2030(6G)推进组星地融合(...
泰雷兹推出Luna 8硬件安全... 法国航空航天、国防及网络安全技术巨头泰雷兹集团日前宣布,旗下全新硬件安全模块Luna 8正式上市。这...
俄无人机厂负责人遭汽车炸弹袭击 新华社莫斯科8月5日电(记者黄河)俄罗斯媒体5日报道称,俄罗斯中部斯维尔德洛夫斯克州首府叶卡捷琳堡市...
高层用全落地玻璃安全吗 最佳回答 高层用全落地窗玻璃虽然看上去比较上档次,但同时也存在一定的风险,并不是特别安全,各方面还是...
便池黑了怎么处理刷黑了怎么处理 便池变黑可能是由于长期使用、污渍积累或其他原因导致的。以下是一些处理便池变黑的方法:1. 使用清洁剂...
九牧王智能马桶不能自动冲水怎么... 如果九牧王智能马桶不能自动冲水,以下是一些可能的解决方法:1. 检查电源:确保马桶的电源插头插好,电...
全球第三,领先OpenAI!上... 今年7月,OpenAI的一款大模型在内部测试时失控,它自主发现漏洞、规划路径,成功入侵了全球知名人工...