成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

django中的配置文件

番茄西紅柿 / 1312人閱讀

摘要:默認(rèn)的,及使用它的號(hào)數(shù)據(jù)庫此處使用號(hào)數(shù)據(jù)庫,在客戶端查看記得切換數(shù)據(jù)庫存儲(chǔ)在本機(jī)內(nèi)存中,比數(shù)據(jù)庫的方式讀寫快很多默認(rèn)的配置項(xiàng),采用號(hào)庫。狀態(tài)保持的配置項(xiàng),采用號(hào)庫。使用名為的配置項(xiàng)存儲(chǔ)數(shù)據(jù)。配置完成后運(yùn)行程序,測試結(jié)果。

1.配置開發(fā)環(huán)境

當(dāng)進(jìn)入虛擬環(huán)境,通過django_admin創(chuàng)建一個(gè)項(xiàng)目后,會(huì)在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過程中會(huì)有不同的環(huán)境,如開發(fā)環(huán)境、生產(chǎn)環(huán)境;所有不同的環(huán)境各自使用不同的配置顯得很重要。

開發(fā)環(huán)境:用于編寫和調(diào)試項(xiàng)目代碼。

生產(chǎn)環(huán)境:用于項(xiàng)目線上部署運(yùn)行。

1.1 新建配置文件

    準(zhǔn)備配置文件目錄

    項(xiàng)目同名目錄里名新建包,命名為settings,作為配置文件目錄

    準(zhǔn)備開發(fā)和生產(chǎn)環(huán)境配置文件

    在配置包settings中,新建開發(fā)環(huán)境配置文件

    準(zhǔn)備開發(fā)環(huán)境配置內(nèi)容

    將默認(rèn)的配置文件settings.py中內(nèi)容拷貝至setting包中,并命名為dev.py

1.2 指定開發(fā)環(huán)境配置文件

在項(xiàng)目文件manage.py中做如下修改:

# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings") #默認(rèn)找setting.py,此處注釋掉
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev")
2.配置Jinja2模板引擎

2.1 安裝Jinja2擴(kuò)展包

pip install Jinja2

Jinja2模板渲染速度比django默認(rèn)模板渲染速度要快很多。

2.2 配置Jinja2模板引擎

在前面配置好的開發(fā)環(huán)境dev.py中加入如下代碼,后續(xù)配置不說明也默認(rèn)指在該文件中做修改。

TEMPLATES = [
    {
        BACKEND: django.template.backends.jinja2.Jinja2,  # jinja2模板引擎
        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,
            ],
            # Jinja2模板引擎環(huán)境
            environment: 項(xiàng)目名.utils.jinja2_env.jinja2_environment, # 項(xiàng)目名修改為你項(xiàng)目的名字
        },
    },
]

2.1 編寫Jinja2模板引擎環(huán)境配置代碼

在項(xiàng)目同名應(yīng)用中新建一個(gè)utils包,在包里新建一個(gè)jinja2_environment.py文件,文件里內(nèi)容如下:

from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse


def jinja2_environment(**options):
    env = Environment(**options)
    env.globals.update({
        static: staticfiles_storage.url, # 確保模板引擎中可以使用{{ url() }} {{ static() }}這類語句 
        url: reverse,
    })
    return env

此時(shí)你會(huì)發(fā)現(xiàn)django中的默認(rèn)站點(diǎn)admin已經(jīng)不能訪問了,我們要繼續(xù)使用django強(qiáng)大的后臺(tái)站點(diǎn)功能做如下修改:

TEMPLATES = [
    {
        # django 默認(rèn) template 模板配置
        BACKEND: django.template.backends.django.DjangoTemplates,
        DIRS: [os.path.join(BASE_DIR, templates)],  # 此處配置要渲染的網(wǎng)頁目錄

        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,
            ],
        },
    },
    {
        BACKEND: django.template.backends.jinja2.Jinja2,  # jinja2模板引擎
        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,
            ],
            # Jinja2模板引擎環(huán)境
            environment: 項(xiàng)目名.utils.jinja2_env.jinja2_environment,
        },
    },
]
3 配置MySQL數(shù)據(jù)庫

3.1 本地MySQL配置

先確保你本地MySQL有所需要的數(shù)據(jù)庫名,然后進(jìn)行連接,下面語句進(jìn)入MySQL客戶端后可新建一個(gè)數(shù)據(jù)庫。

create database 數(shù)據(jù)庫名 charset=utf8;

默認(rèn)連接MySQL都是root用戶權(quán)限級(jí)別太高,擁有操作所有數(shù)據(jù)庫的權(quán)限,下面介紹MySQL新建用戶并賦予操作多帶帶一個(gè)數(shù)據(jù)庫的權(quán)限。

 create user tom identified by 123456;   --新建tom用戶,密碼123456 
 grant all on mall.* to tom@%;         --授權(quán)tom用戶操作mall數(shù)據(jù)庫使用權(quán)限 
 flush privileges;                         --刷新權(quán)限

3.2 配置MySQL數(shù)據(jù)庫

django默認(rèn)使用sqlite3數(shù)據(jù)庫,這是一個(gè)輕量級(jí)關(guān)系型數(shù)據(jù)庫,我們下面替換掉它,在dev.py中做如下配置:

DATABASES = {
    default: {
        ENGINE: django.db.backends.mysql, # 數(shù)據(jù)庫引擎
        HOST: 127.0.0.1, # 數(shù)據(jù)庫主機(jī),填項(xiàng)目中數(shù)據(jù)庫真實(shí)ip
        PORT: 3306, # 數(shù)據(jù)庫端口
        USER: tom, # 數(shù)據(jù)庫用戶名
        PASSWORD: 123456, # 數(shù)據(jù)庫用戶密碼
        NAME: mall # 數(shù)據(jù)庫名字
    },
}

3.3 安裝PyMySQL擴(kuò)展包

pip install pymysql

在工程同名子目錄的__init__.py文件中,添加如下代碼:

from pymysql import install_as_MySQL

db??install_as_MySQLdb()

配置完成后:運(yùn)行程序,測試結(jié)果。

4.配置redis

首先確保安裝了redis數(shù)據(jù)庫,然后在虛擬環(huán)境中安裝redis,同樣是通過pip安裝。安裝完以后還有安裝redis的django擴(kuò)展包django-redis。

pip install redis
pip install django-redis

dev.py中配置redis,此處用它來做session緩存。

CACHES = {
    "default": { # 默認(rèn)
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",  # redis的ip,及使用它的0號(hào)數(shù)據(jù)庫
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",  # 此處使用1號(hào)數(shù)據(jù)庫,在客戶端查看記得select 1,切換數(shù)據(jù)庫
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache" # 存儲(chǔ)在本機(jī)內(nèi)存中,比數(shù)據(jù)庫的方式讀寫快很多
SESSION_CACHE_ALIAS = "session"

default:

默認(rèn)的Redis配置項(xiàng),采用0號(hào)Redis庫。

session:

狀態(tài)保持的Redis配置項(xiàng),采用1號(hào)Redis庫。

SESSION_ENGINE

修改session存儲(chǔ)機(jī)制使用Redis保存。

SESSION_CACHE_ALIAS:

使用名為"session"的Redis配置項(xiàng)存儲(chǔ)session數(shù)據(jù)

配置完成后:運(yùn)行程序,測試結(jié)果。

關(guān)于對(duì)session緩存策略的說明:

本地緩存

存儲(chǔ)在本機(jī)內(nèi)存中,如果丟失則不能找回,比數(shù)據(jù)庫的方式讀寫更快。

SESSION_ENGINE=django.contrib.sessions.backends.cache

混合存儲(chǔ)

優(yōu)先從本機(jī)內(nèi)存中存取,如果沒有則從數(shù)據(jù)庫中存取。

SESSION_ENGINE=django.contrib.sessions.backends.cached_db

默認(rèn)存儲(chǔ)

存儲(chǔ)在數(shù)據(jù)庫中,如下設(shè)置可以寫,也可以不寫。

SESSION_ENGINE=django.contrib.sessions.backends.db
5.配置項(xiàng)目日志

下面介紹使用logging記錄項(xiàng)目的日志。在dev.py中做如下設(shè)置:

LOGGING = {
    version: 1,
    disable_existing_loggers: False,  # 是否禁用已經(jīng)存在的日志器
    formatters: {  # 日志信息顯示的格式
        verbose: {
            format: %(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s
        },
        simple: {
            format: %(levelname)s %(module)s %(lineno)d %(message)s
        },
    },
    filters: {  # 對(duì)日志進(jìn)行過濾
        require_debug_true: {  # django在debug模式下才輸出日志
            (): django.utils.log.RequireDebugTrue,
        },
    },
    handlers: {  # 日志處理方法
        console: {  # 向終端中輸出日志
            level: INFO,
            filters: [require_debug_true],
            class: logging.StreamHandler,
            formatter: simple
        },
        file: {  # 向文件中輸出日志
            level: INFO,
            class: logging.handlers.RotatingFileHandler,
            filename: os.path.join(os.path.dirname(BASE_DIR), logs/mall.log),  # 日志文件的位置
            maxBytes: 300 * 1024 * 1024,
            backupCount: 10,
            formatter: verbose
        },
    },
    loggers: {  # 日志器
        django: {  # 定義了一個(gè)名為django的日志器
            handlers: [console, file],  # 可以同時(shí)向終端與文件中輸出日志
            propagate: True,  # 是否繼續(xù)傳遞日志信息
            level: INFO,  # 日志器接收的最低日志級(jí)別
        },
    }
}

然后在項(xiàng)目目錄中建立一個(gè)logs的目錄,然后在目錄中建立一個(gè)mall.log文件。名字可以任意起,記得很上面file中filename對(duì)應(yīng)起來即可。

當(dāng)然實(shí)際開發(fā)中大都是使用git來管理項(xiàng)目的,每個(gè)人調(diào)試產(chǎn)出的log不太一樣,開發(fā)中可以先將其加入忽略文件中。在項(xiàng)目文件.gitignioe中新增如下信息:

*.log

然后在logs目錄中建立一個(gè).gitkeep文件,保證logs目錄能被git管理。

6.配置前端靜態(tài)文件

前面提了一下項(xiàng)目中的html模板文件是配置在templates中,需要在項(xiàng)目同名子應(yīng)用中建立一個(gè)templates目錄,項(xiàng)目中需要使用靜態(tài)文件,比如 css、images、js 等等,需要專門使用配置一個(gè)目錄。在里面建立不同的目錄來存放不同的文件。

STATIC_URL = /static/ # 靜態(tài)文件的路由?# 配置靜態(tài)文件加載路徑
STATICFILES_DIRS = [os.path.join(BASE_DIR, static)] # 在項(xiàng)目同名子引用中建立一個(gè)static目錄

STATICFILES_DIRS是一個(gè)列表,這樣我們就可以配置多個(gè)目錄來存放靜態(tài)文件。如:

# 配置靜態(tài)文件加載路徑
STATICFILES_DIRS = [os.path.join(BASE_DIR, static),os.path.join(BASE_DIR, static2)] 
7.應(yīng)用注冊(cè)

在項(xiàng)目同名目錄中,也就是setting包同級(jí)目錄中新建一個(gè)apps的包,然后進(jìn)入到apps的目錄中,在終端執(zhí)行如下命令,創(chuàng)建一個(gè)users應(yīng)用。

python ../../manage.py startapp users

然后在dev.py中注冊(cè)應(yīng)用:

INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    # 注冊(cè)
     mall.apps.users.apps.UsersConfig, # 用戶模塊應(yīng)用
]

下面介紹一下python中sys模塊,在dev.pyBASE_DIR下新增:

import sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, apps)) # 追加項(xiàng)目路徑

這樣注冊(cè)應(yīng)用就能簡化成如下方式了:

INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    # 注冊(cè)
    # mall.apps.users.apps.UsersConfig, # 用戶模塊應(yīng)用
    users, # 用戶模塊應(yīng)用
]


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/7182.html

相關(guān)文章

  • django中的配置文件

    摘要:默認(rèn)的,及使用它的號(hào)數(shù)據(jù)庫此處使用號(hào)數(shù)據(jù)庫,在客戶端查看記得切換數(shù)據(jù)庫存儲(chǔ)在本機(jī)內(nèi)存中,比數(shù)據(jù)庫的方式讀寫快很多默認(rèn)的配置項(xiàng),采用號(hào)庫。狀態(tài)保持的配置項(xiàng),采用號(hào)庫。使用名為的配置項(xiàng)存儲(chǔ)數(shù)據(jù)。配置完成后運(yùn)行程序,測試結(jié)果。 1.配置開發(fā)環(huán)境當(dāng)進(jìn)入虛擬環(huán)境,通過django_admin創(chuàng)建一個(gè)項(xiàng)目后,會(huì)在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過程中會(huì)有不同的環(huán)境,如開發(fā)環(huán)境、生...

    williamwen1986 評(píng)論0 收藏0
  • Django 項(xiàng)目配置初體驗(yàn)(一)

    摘要:靜態(tài)資源路徑可以有多個(gè),所以這里使用一個(gè)列表進(jìn)行配置再次進(jìn)入,完美后記現(xiàn)在只涉及到了項(xiàng)目的配置和一些基礎(chǔ)的配置,沒有涉及到請(qǐng)求從開始到完成的任何內(nèi)容。下篇教程將集中進(jìn)行記錄。 前言 推薦使用 virtualenv 創(chuàng)建 python 虛擬環(huán)境,防止因?yàn)槭褂?pip 安裝依賴到全局引起版本沖突的問題,PyCharm 默認(rèn)會(huì)生成一個(gè) venv 目錄并創(chuàng)建虛擬環(huán)境,使用 IDE 自帶的終端...

    Wildcard 評(píng)論0 收藏0
  • 【連載】Django入門到實(shí)戰(zhàn)(一)

    摘要:一項(xiàng)目目錄結(jié)構(gòu)介紹與項(xiàng)目進(jìn)行交互的命令行工具集的入口項(xiàng)目管理器目錄項(xiàng)目容器,包含項(xiàng)目的基本配置,目錄名稱不建議修改中聲明模塊的文件,內(nèi)容默認(rèn)為空項(xiàng)目的總配置文件,包含數(shù)據(jù)庫應(yīng)用時(shí)間等各種配置配置文件,項(xiàng)目中所有地址頁面都需要我們自己去配置其 一、項(xiàng)目目錄結(jié)構(gòu)介紹 showImg(https://segmentfault.com/img/remote/1460000016373937?w...

    since1986 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<