Django項目-正式開始前的完整配置流程

Django 項目流程

準備項目代碼倉庫

1.源碼托管網站

  • 碼云
  • github

2.在代碼托管網站創(chuàng)建源碼遠程空倉庫:

  • 創(chuàng)建遠程dev分支
  • 配置SSH公鑰:Linux位于"用戶目錄/.ssh/id_rsa.pu"

克隆項目代碼倉庫

1. 指定本地項目目錄內克隆項目
$ git clone https://gitee.com/XXXXXXXXX.git
2. 創(chuàng)建dev分支

  • 克隆服務器端的分支并跟蹤:
    git checkout -b dev origin/dev
  • 創(chuàng)建自己的本地分支:
    checkout -b my_dev

3.創(chuàng)建項目虛擬環(huán)境格嘁,安裝Django框架
mkvirtualenv -p python3 env_name
pip install django==1.11.11
4. 在本地分支上創(chuàng)建Django工程
django-admin startproject project_name

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

1. 新建配置文件

  1. 準備配置文件目錄

    • 在工程同名目錄下就珠,新建包,命名為settings圆到,作為配置文件目錄
  2. 準備開發(fā)和生產環(huán)境配置文件

    • 在配置包settings中走哺,新建開發(fā)和生產環(huán)境配置文件(不同配置文件可用于開發(fā)/測試/上線環(huán)境)
  3. 準備開發(fā)環(huán)境配置內容

    • 將默認的配置文件settings.py中內容拷貝至dev.py,并刪除原settings文件


      image.png
  4. 指定開發(fā)環(huán)境配置文件

在manage.py中修改默認使用的配置文件:


image.png

創(chuàng)建模板文件夾

在工程同名目錄下創(chuàng)建模板文件夾蚯嫌,命名templates,該目錄名必須為templates,不可改變丙躏。

創(chuàng)建utils工具包

  • 在工程同名目錄下創(chuàng)建utils包單獨用來存放工具類择示、自定義模塊及第三方代碼,如jinja2的環(huán)境配置文件
  • 創(chuàng)建Jinja2模板引擎環(huán)境配置文件jinja2_env.py
    image.png

添加代碼如下:

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': reverse,
   })
   return env

配置Jinja2模板引擎

  1. 安裝Jinja2擴展包
    在當前虛擬環(huán)境下:

pip install Jinja2

  1. 配置Jinja2模板引擎
    在當前使用的dev設置文件下修改TEMPLATES配置:
  • 第一行BACKEND項修改模板引擎為jinja2
  • 第二行添加上面創(chuàng)建的templates模板文件夾路徑
  • 最后內容行加載Jinja2模板環(huá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': 'meiduo_mall.utils.jinja2_env.jinja2_environment', 
        },
    },
]

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

  1. 安裝并設置PyMySQL擴展包

pip install pymysql

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

from pymysql import install_as_MySQLdb

install_as_MySQLdb()
  1. 在當前使用的設置文件dev.py下栅盲,修改DATABASE:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 數(shù)據(jù)庫引擎
        'HOST': '127.0.0.1', # 數(shù)據(jù)庫主機
        'PORT': 3306, # 數(shù)據(jù)庫端口
        'USER': 'root', # 數(shù)據(jù)庫用戶名
        'PASSWORD': '123456', # 數(shù)據(jù)庫用戶密碼
        'NAME': 'meiduo' # 數(shù)據(jù)庫名字
    },
}

配置Redis數(shù)據(jù)庫

使用redis來儲存后期的驗證碼及session等緩存文件。

  1. 安裝django-redis擴展包

pip install django-redis

  1. 配置Redis數(shù)據(jù)庫
  • 在當前使用的設置文件dev.py中添加CACHES設置:
CACHES = {
    "default": { # 默認
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

配置工程文件

  1. 創(chuàng)建日志文件目錄
    在manage.py同級目錄下废恋,創(chuàng)建目錄logs存放日志文件谈秫。

    • logs文件同樣需要被git管理扒寄,但不應上傳log目錄下的.log文件。
    • 將*.log添加至忽略文件
    • 在log目錄下創(chuàng)建空文件.gitkeep拟烫,使log目錄能被git管理旗们,否則git不會管理空目錄。


      image.png
  2. 配置工程日志
    dev.py設置文件中添加:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,  # 是否禁用已經存在的日志器
    'formatters': {  # 日志信息顯示的格式
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {  # 對日志進行過濾
        '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/meiduo.log'),  # 日志文件的位置
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {  # 日志器
        'django': {  # 定義了一個名為django的日志器
            'handlers': ['console', 'file'],  # 可以同時向終端與文件中輸出日志
            'propagate': True,  # 是否繼續(xù)傳遞日志信息
            'level': 'INFO',  # 日志器接收的最低日志級別
        },
    }
}

配置靜態(tài)文件

  1. 創(chuàng)建靜態(tài)文件目錄
    在工程同名子目錄中构灸,創(chuàng)建目錄static

    image.png

  2. 指定靜態(tài)文件加載路徑
    在當前設置文件dev.py中添加靜態(tài)文件路徑設置

STATIC_URL = '/static/'

# 配置靜態(tài)文件加載路徑
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

創(chuàng)建app路徑

為了工程app的管理上渴,這里不應把app目錄直接創(chuàng)建在manage.py同級的目錄中。

  • 在工程同名子目錄中喜颁,創(chuàng)建包稠氮,名為apps
    image.png
  • 需要創(chuàng)建應用時,創(chuàng)建位置在該apps
  • 創(chuàng)建方式:cd到該apps路徑下:
    python3 ../../manage.py startapp appname
    注:manage.py不在相同目錄半开,需要使用../../找到它隔披。

追加導包路徑

由于自定義app存放路徑,使目錄結構的變更寂拆,當我們需要在設置文件中注冊app時奢米,需要輸入更長的路徑。

  • 為了更方便的應用模塊纠永,可以追加導包路徑鬓长。
  • sys.path下即為python的導包路徑列表,python會先在當前目錄查找導包尝江,如沒有涉波,再按順序在sys.path的列表路徑下查找。
  • 在當前設置文件dev.py中:
    添加apps目錄至導包路徑
import sys
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))

pycharm路徑報錯解決

  1. 雖然我們添加了導包路徑的設置炭序,到時pycharm并不能直接識別啤覆,依然會顏色標注提示路徑的錯誤,即使不影響程序的運行惭聂,但看著和用著也是不舒服的窗声。

    • 解決辦法:
      告訴pycharmapps目錄為導包路徑


      image.png
  2. 設置JavaScript語言
    如果templates下的js文件內容報錯,可能是pycharm語言識別錯誤:

  • 解決辦法:setting- Languges&Frameworks- JavaScript中設置ECMAScript 6,具體如下:

    image.png

好的辜纲,Django項目開始前的基本配置就準備好了笨觅。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侨歉,隨后出現(xiàn)的幾起案子屋摇,更是在濱河造成了極大的恐慌,老刑警劉巖幽邓,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異火脉,居然都是意外死亡牵舵,警方通過查閱死者的電腦和手機柒啤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畸颅,“玉大人担巩,你說我怎么就攤上這事∶怀矗” “怎么了涛癌?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長送火。 經常有香客問我拳话,道長,這世上最難降的妖魔是什么种吸? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任弃衍,我火速辦了婚禮,結果婚禮上坚俗,老公的妹妹穿的比我還像新娘镜盯。我一直安慰自己,他們只是感情好猖败,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布速缆。 她就那樣靜靜地躺著,像睡著了一般恩闻。 火紅的嫁衣襯著肌膚如雪激涤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天判呕,我揣著相機與錄音倦踢,去河邊找鬼。 笑死侠草,一個胖子當著我的面吹牛辱挥,可吹牛的內容都是我干的。 我是一名探鬼主播边涕,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼晤碘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了功蜓?” 一聲冷哼從身側響起园爷,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎式撼,沒想到半個月后童社,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡著隆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年扰楼,在試婚紗的時候發(fā)現(xiàn)自己被綠了呀癣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡弦赖,死狀恐怖项栏,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情蹬竖,我是刑警寧澤沼沈,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站币厕,受9級特大地震影響列另,放射性物質發(fā)生泄漏。R本人自食惡果不足惜劈榨,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一访递、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧同辣,春花似錦拷姿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至棒妨,卻和暖如春踪古,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背券腔。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工伏穆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纷纫。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓枕扫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辱魁。 傳聞我的和親對象是個殘疾皇子烟瞧,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351