最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python框架Django實(shí)戰(zhàn)商城項(xiàng)目之工程搭建過(guò)程圖文詳解

 更新時(shí)間:2020年03月09日 08:26:10   作者:zyjImmortal 的個(gè)人博客  
這篇文章主要介紹了python框架Django實(shí)戰(zhàn)商城項(xiàng)目之工程搭建過(guò)程,這個(gè)項(xiàng)目很像京東商城,項(xiàng)目開(kāi)發(fā)采用前后端不分離的模式,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下

項(xiàng)目說(shuō)明

該電商項(xiàng)目類(lèi)似于京東商城,主要模塊有驗(yàn)證、用戶(hù)、第三方登錄、首頁(yè)廣告、商品、購(gòu)物車(chē)、訂單、支付以及后臺(tái)管理系統(tǒng)。項(xiàng)目開(kāi)發(fā)模式采用前后端不分離的模式,為了提高搜索引擎排名,頁(yè)面整體刷新采用jinja2模板引擎實(shí)現(xiàn),局部刷新采用vue.js實(shí)現(xiàn)。

項(xiàng)目運(yùn)行機(jī)制如下:

項(xiàng)目搭建

工程創(chuàng)建

項(xiàng)目使用碼云進(jìn)行源代碼版本控制,在碼云創(chuàng)建好后直接克隆到本地即可,然后在項(xiàng)目根目錄下執(zhí)行virtualenv venv創(chuàng)建虛擬環(huán)境,source venv/bin/activat激活虛擬環(huán)境后,安裝django后,執(zhí)行 django-admin startproject immortal_mall創(chuàng)建django工程。

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

商城項(xiàng)目有兩個(gè)環(huán)境,分別為測(cè)試環(huán)境和開(kāi)發(fā)環(huán)境,django項(xiàng)目在創(chuàng)建完成后只有一個(gè)settings配置文件,但是兩個(gè)環(huán)境需要兩個(gè)配置文件,這里需要修改django獲取配置文件的方式。新建settings包,再新建dev和pro兩個(gè)配置文件,將默認(rèn)生成的settings文件里面的內(nèi)容拷貝至dev和pro文件里,結(jié)果如下

再在mange.py文件里指定開(kāi)發(fā)環(huán)境需要的配置文件,生成環(huán)境的后面再說(shuō)

配置jiaja2模板引擎

安裝jinja2擴(kuò)展包pip install jinja2,然后在dev文件中配置一下

這里有個(gè)注意的點(diǎn),如果在運(yùn)行的時(shí)候報(bào)錯(cuò)了,提示

這時(shí)是因?yàn)樽⑨尩袅薲jango默認(rèn)的模板配置,需要去掉注釋?zhuān)惶砑有碌陌姹疽鸺纯伞?/p>

配置mysql數(shù)據(jù)庫(kù)

新建數(shù)據(jù)庫(kù)

新建數(shù)據(jù)庫(kù)

create database meiduo charset=utf8;

新建mysql用戶(hù)

create user mall identified by '123456';

授權(quán)用戶(hù)只能訪問(wèn)immortal_mall數(shù)據(jù)庫(kù)

grant all on immortal_mall.* to 'mall'@'%';

刷新授權(quán)

flush privileges;

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

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'immortal_mall',
 'HOST': '127.0.0.1',
 'USER': 'zhouyajun',
 'PASSWORD': '12345678',
 'PORT': '3306'
 }
}

django默認(rèn)使用的是mysqlclient工具,需要單獨(dú)安裝,這里用pymysql代替,在工程同名子目錄的__init__.py文件中,寫(xiě)入下面代碼

import pymysql
pymysql.install_as_MySQLdb()

在啟動(dòng)項(xiàng)目對(duì)的時(shí)候可能會(huì)報(bào)錯(cuò),提示mysql

File "/Users/lixiang/.env/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 36, in <module> raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__) django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

具體解決方式可以參考這里https://zhuanlan.zhihu.com/p/76920424

配置redis

商城采用redis作為緩存服務(wù)

pip install django-redis

這里是django-redis的使用文檔https://django-redis-chs.readthedocs.io/zh_CN/latest/,在dev文件中配置redis

緩存配置

CACHES = {
 "default": {
 "BACKEND": "django_redis.cache.RedisCache",
 "LOCATION": "redis://127.0.0.1:6379/2",
 "OPTIONS": {
 "CLIENT_CLASS": "django_redis.client.DefaultClient",
 }
 },
 "session": {
 "BACKEND": "django_redis.cache.RedisCache",
 "LOCATION": "redis://127.0.0.1:6379/3",
 "OPTIONS": {
 "CLIENT_CLASS": "django_redis.client.DefaultClient",
 }
 }
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

default是redis采用的默認(rèn)配置,用的是2號(hào)數(shù)據(jù)庫(kù),session是redis保持保持狀態(tài)的配置項(xiàng),用的是3號(hào)數(shù)據(jù)庫(kù),

日志配置

# 日志配置
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)目的根目錄下手動(dòng)創(chuàng)建logs文件,寫(xiě)日志的時(shí)候呢,我們希望能夠自動(dòng)分日期去寫(xiě),每天的日志寫(xiě)到不同的文件里,這里可以使用python模塊自帶的TimedRotatingFileHandler,也可以自定義一個(gè)handler類(lèi)去實(shí)現(xiàn)。我這里呢自己實(shí)現(xiàn)了一個(gè)類(lèi)叫做MallRotatingFileHandler 效果如下:

該類(lèi)實(shí)現(xiàn)按月劃分日志文件,自動(dòng)按照當(dāng)天日期命名日志文件,也可以定義文件容量。

配置前端靜態(tài)文件準(zhǔn)備靜態(tài)文件夾static

指定靜態(tài)文件加載路徑

# 指定加載靜態(tài)恩建路由前綴
STATIC_URL = '/static/'
# 配置靜態(tài)文件加載路徑
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

運(yùn)行項(xiàng)目,請(qǐng)求獲取一張圖片http://127.0.0.1:8989/static/images/adv01.jpg,成功獲取表示配置正確。

最終項(xiàng)目各個(gè)目錄展示成果:

總結(jié)

到此這篇關(guān)于python框架Django實(shí)戰(zhàn)商城項(xiàng)目之工程搭建過(guò)程的文章就介紹到這了,更多相關(guān)python框架Django工程搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 離線安裝Pyecharts的步驟以及依賴(lài)包流程

    離線安裝Pyecharts的步驟以及依賴(lài)包流程

    這篇文章主要介紹了離線安裝Pyecharts的步驟以及依賴(lài)包流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法

    tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 分割python多空格字符串的兩種方法小結(jié)

    分割python多空格字符串的兩種方法小結(jié)

    這篇文章主要介紹了分割python多空格字符串的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園

    Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園

    這篇文章主要介紹了Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python+radar實(shí)現(xiàn)隨機(jī)日期時(shí)間的生成

    Python+radar實(shí)現(xiàn)隨機(jī)日期時(shí)間的生成

    Python有廣泛豐富的第三方庫(kù),在沒(méi)有特殊定制下,避免了重復(fù)造輪子。本文將利用radar庫(kù)實(shí)現(xiàn)生成隨機(jī)的日期或時(shí)間,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-05-05
  • 使用Python獲取Word文檔關(guān)鍵信息

    使用Python獲取Word文檔關(guān)鍵信息

    計(jì)算 Word 文檔的頁(yè)數(shù)、字?jǐn)?shù)等信息是出版、學(xué)術(shù)和內(nèi)容管理等領(lǐng)域的一項(xiàng)基本任務(wù),本文介紹了使用Python直接獲取Word文檔頁(yè)數(shù)、字?jǐn)?shù)、段落數(shù)、節(jié)數(shù)等信息的方法,希望對(duì)大家有所幫助
    2024-03-03
  • Python個(gè)人博客程序開(kāi)發(fā)實(shí)例框架設(shè)計(jì)

    Python個(gè)人博客程序開(kāi)發(fā)實(shí)例框架設(shè)計(jì)

    這篇文章主要介紹了怎樣用Java來(lái)實(shí)現(xiàn)一個(gè)完整的個(gè)人博客系統(tǒng),我們通過(guò)實(shí)操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識(shí),感興趣的朋友一起來(lái)看看吧
    2022-12-12
  • Python中pymysql 模塊的使用詳解

    Python中pymysql 模塊的使用詳解

    pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
    2019-08-08
  • python基礎(chǔ)之集合

    python基礎(chǔ)之集合

    這篇文章主要介紹了python集合,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python編程Flask框架簡(jiǎn)單使用教程

    python編程Flask框架簡(jiǎn)單使用教程

    這篇文章主要為大家介紹了python編程中Flask框架簡(jiǎn)單使用教程,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11

最新評(píng)論

章丘市| 噶尔县| 瓮安县| 长泰县| 和静县| 黔西| 马公市| 元江| 华亭县| 临江市| 腾冲县| 京山县| 平武县| 绍兴市| 岑溪市| 东宁县| 驻马店市| 东乡| 六安市| 尉氏县| 繁昌县| 铜山县| 灵璧县| 宝清县| 青浦区| 屏东县| 青龙| 攀枝花市| 绥宁县| 三亚市| 临桂县| 蛟河市| 酒泉市| 衢州市| 民勤县| 柳河县| 翁源县| 克什克腾旗| 顺平县| 扬中市| 镇江市|