溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

django開發(fā)配置

發(fā)布時間:2020-06-14 15:12:49 來源:網(wǎng)絡(luò) 閱讀:746 作者:FanoLi 欄目:數(shù)據(jù)庫

    公司業(yè)務(wù)提供API數(shù)據(jù)接口調(diào)用,但開發(fā)沒時間開發(fā)數(shù)據(jù)統(tǒng)計,寫了一個python定時任務(wù)腳本每天做統(tǒng)計并發(fā)送統(tǒng)計結(jié)果于相關(guān)人員。解決了臨時問題,查看歷史調(diào)用量和精確時間點(diǎn)查尋等還需要人工統(tǒng)計。于是就想寫一套頁面統(tǒng)計展示的程序,給相關(guān)人員查尋使用。

    環(huán)境Centos6.5+Python2.7.12+Django8.1;(注:Django8.1以后的版本與之間的版本差異比較大)

寫這篇文章一是與大家一起分享,也是為以后自己查尋方便。

環(huán)境安裝略......


# Create New Project "Consume"

~] django-admin.py startproject consume

~] cd consume


我們需要對兩個業(yè)務(wù)項目的數(shù)據(jù)調(diào)用做統(tǒng)計,再創(chuàng)建兩個業(yè)務(wù)APP;整個代碼邏輯都在主項目consume中完成,兩個業(yè)務(wù)項目主要提供數(shù)據(jù)庫支持。


# Create professional work app

~] ./manage.py startapp work1

~] ./manage.py startapp work2


從上至下一項一項配置,我的配置標(biāo)紅,其它配置不做解釋:

# Setup master configuration file

    # Setup access permissions

    ALLOWED_HOSTS = ["*"]            // 項目放在內(nèi)網(wǎng),內(nèi)部應(yīng)用所以允許所有訪問

    # 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',                                     // 提供數(shù)據(jù)調(diào)用的業(yè)務(wù)項目

        'work2',                                     // 提供數(shù)據(jù)調(diào)用的業(yè)務(wù)項目

    ]

    # Setup the path for template files

    TEMPLATES = [

        {

            'BACKEND': 'django.template.backends.django.DjangoTemplates',

            'DIRS': [

                os.path.join(BASE_DIR, 'templates'),     // 默認(rèn)是空的,根據(jù)自己需要規(guī)劃目錄結(jié)構(gòu)

                                                                               // 配置模板文件存放路徑與項目同級

            ],

            '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 (兩個業(yè)務(wù)項目用的是不同的數(shù)據(jù)庫,這里是多庫配置)

    DATABASES = {

        'default': {               // 可以沒有默認(rèn)的數(shù)據(jù)庫,但'default'配置必須存在

                                      // 我這里需要用戶登陸,使用單獨(dú)的數(shù)據(jù)庫,在本地

            'ENGINE': 'django.db.backends.mysql',

            'NAME': '****',

            'HOST': 'localhost',

            'USER': '****',

            'PORT': '3306',

            'PASSWORD': '****',

        },

        // 下面兩個是業(yè)務(wù)項目的數(shù)據(jù)庫,不在本地

        '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')    // 這里配置靜態(tài)文件存放路徑與模板文件同級

    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'),

    ]

    // 檢索靜態(tài)文件引擎配置

    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

同步數(shù)據(jù)

    ./manage.py makemigrations                   // 生成同步數(shù)據(jù)文件,存放在應(yīng)用的migrations目錄下

    ./manage.py migrate --database work1   // 同步數(shù)據(jù)

從數(shù)據(jù)庫反向生成models.py:./manage.py inspectdb --database work1 >consume/work1/models.py

查尋數(shù)據(jù):models.work1.objects.using('work1').all()

    // 多數(shù)據(jù)庫操作必須指定操作的數(shù)據(jù)庫,不指定默認(rèn)為default庫;這是一種簡單的多庫使用方法,也                                 // 可以配置數(shù)據(jù)庫路由使用,可參考官方文檔。

# 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


# 配置應(yīng)用

~] touch consume/{models.py,views.py}

~] cat >>consume/apps.py<<EOF              // 默認(rèn)沒有

from __future__ import unicode_literals

from django.apps import AppConfig


class AntiFraudConfig(AppConfig):

    name = 'consume'

EOF


# 反向生成數(shù)據(jù)models.py文件

~] ./manage.py inspectdb --database work1 >consume/work1/models.py

~] ./manage.py inspectdb --database work2 >consume/work2/models.py

# 編寫consume/models.py,設(shè)計用戶登陸認(rèn)證class

~] cat >>consume/models.py<<EOF

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

# 創(chuàng)建數(shù)據(jù)庫并配置訪問權(quán)限;略......

# 同步到數(shù)據(jù)庫

~] ./manage.py makemigrations

~] ./manage.py migrate                                // 這里沒加--database參數(shù),默認(rèn)同步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配置靜態(tài)文件生效

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中的靜態(tài)文件                                                                                                                                                     // 配置才會生效


# 下載bootstrap到static并解壓;略......

開媽寫代碼.............

主頁上可以做5個標(biāo)簽頁上,常用固定時間段的數(shù)據(jù)調(diào)用查尋;Dashboard后面摭住的三個button是           兩個項目和登陸用戶。

主頁效果如下圖:

 

進(jìn)入項目可以做詳細(xì)查詢,如下圖:


詳細(xì)查詢頁面效果如下圖:

可根據(jù)時間段要求,針對某一個用戶做詳細(xì)查詢,不再上圖

OVER

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI