国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

django中的配置文件

williamwen1986 / 3985人閱讀

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

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

當(dāng)進(jìn)入虛擬環(huán)境,通過(guò)django_admin創(chuàng)建一個(gè)項(xiàng)目后,會(huì)在項(xiàng)目同名目錄生成一個(gè)setting.py文件。而實(shí)際項(xiàng)目過(guò)程中會(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ù)配置不說(shuō)明也默認(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("") }}這類語(yǔ)句 
        "url": reverse,
    })
    return env

此時(shí)你會(huì)發(fā)現(xiàn)django中的默認(rèn)站點(diǎn)admin已經(jīng)不能訪問(wèn)了,我們要繼續(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)頁(yè)目錄

        "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ù)庫(kù)

3.1 本地MySQL配置

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

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

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

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

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

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

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

3.3 安裝PyMySQL擴(kuò)展包

pip install pymysql

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

from pymysql import install_as_MySQL

db??install_as_MySQLdb()

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

4.配置redis

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

pip install redis
pip install django-redis

dev.py中配置redis,此處用它來(lái)做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ù)庫(kù)
        "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ù)庫(kù),在客戶端查看記得select 1,切換數(shù)據(jù)庫(kù)
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache" # 存儲(chǔ)在本機(jī)內(nèi)存中,比數(shù)據(jù)庫(kù)的方式讀寫快很多
SESSION_CACHE_ALIAS = "session"

default:

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

session:

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

SESSION_ENGINE

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

SESSION_CACHE_ALIAS:

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

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

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

本地緩存

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

SESSION_ENGINE="django.contrib.sessions.backends.cache"

混合存儲(chǔ)

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

SESSION_ENGINE="django.contrib.sessions.backends.cached_db"

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

存儲(chǔ)在數(shù)據(jù)庫(kù)中,如下設(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)行過(guò)濾
        "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)起來(lái)即可。

當(dāng)然實(shí)際開發(fā)中大都是使用git來(lái)管理項(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è)目錄。在里面建立不同的目錄來(lái)存放不同的文件。

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

STATICFILES_DIRS是一個(gè)列表,這樣我們就可以配置多個(gè)目錄來(lái)存放靜態(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)用就能簡(jiǎn)化成如下方式了:

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.specialneedsforspecialkids.com/yun/7031.html

相關(guān)文章

  • django中的配置文件

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

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

    摘要:靜態(tài)資源路徑可以有多個(gè),所以這里使用一個(gè)列表進(jìn)行配置再次進(jìn)入,完美后記現(xiàn)在只涉及到了項(xiàng)目的配置和一些基礎(chǔ)的配置,沒(méi)有涉及到請(qǐng)求從開始到完成的任何內(nèi)容。下篇教程將集中進(jìn)行記錄。 前言 推薦使用 virtualenv 創(chuàng)建 python 虛擬環(huán)境,防止因?yàn)槭褂?pip 安裝依賴到全局引起版本沖突的問(wèn)題,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ù)庫(kù)應(yīng)用時(shí)間等各種配置配置文件,項(xiàng)目中所有地址頁(yè)面都需要我們自己去配置其 一、項(xiàng)目目錄結(jié)構(gòu)介紹 showImg(https://segmentfault.com/img/remote/1460000016373937?w...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<