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. 新建配置文件
-
準備配置文件目錄
- 在工程同名目錄下就珠,新建包,命名為settings圆到,作為配置文件目錄
-
準備開發(fā)和生產環(huán)境配置文件
- 在配置包settings中走哺,新建開發(fā)和生產環(huán)境配置文件(不同配置文件可用于開發(fā)/測試/上線環(huán)境)
-
準備開發(fā)環(huán)境配置內容
-
將默認的配置文件settings.py中內容拷貝至dev.py,并刪除原settings文件
-
指定開發(fā)環(huán)境配置文件
在manage.py中修改默認使用的配置文件:
創(chuàng)建模板文件夾
在工程同名目錄下創(chuàng)建模板文件夾蚯嫌,命名templates
,該目錄名必須為templates
,不可改變丙躏。
創(chuàng)建utils工具包
- 在工程同名目錄下創(chuàng)建
utils
包單獨用來存放工具類择示、自定義模塊及第三方代碼,如jinja2的環(huán)境配置文件 - 創(chuàng)建Jinja2模板引擎環(huán)境配置文件
jinja2_env.py
添加代碼如下:
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模板引擎
- 安裝Jinja2擴展包
在當前虛擬環(huán)境下:
pip install Jinja2
- 配置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ù)庫
- 安裝并設置PyMySQL擴展包
pip install pymysql
2.在工程同名子目錄的init.py文件中晒旅,添加如下代碼:
from pymysql import install_as_MySQLdb
install_as_MySQLdb()
- 在當前使用的設置文件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等緩存文件。
- 安裝django-redis擴展包
pip install django-redis
- 配置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"
配置工程文件
-
創(chuàng)建日志文件目錄
在manage.py同級目錄下废恋,創(chuàng)建目錄logs存放日志文件谈秫。- logs文件同樣需要被git管理扒寄,但不應上傳log目錄下的.log文件。
- 將*.log添加至忽略文件
-
在log目錄下創(chuàng)建空文件.gitkeep拟烫,使log目錄能被git管理旗们,否則git不會管理空目錄。
配置工程日志
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)文件
-
創(chuàng)建靜態(tài)文件目錄
在工程同名子目錄中构灸,創(chuàng)建目錄static
指定靜態(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
- 需要創(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路徑報錯解決
-
雖然我們添加了導包路徑的設置炭序,到時pycharm并不能直接識別啤覆,依然會顏色標注提示路徑的錯誤,即使不影響程序的運行惭聂,但看著和用著也是不舒服的窗声。
-
解決辦法:
告訴pycharmapps目錄為導包路徑
-
設置JavaScript語言
如果templates下的js文件內容報錯,可能是pycharm語言識別錯誤:
-
解決辦法:setting- Languges&Frameworks- JavaScript中設置
ECMAScript 6
,具體如下:
好的辜纲,Django項目開始前的基本配置就準備好了笨觅。