欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python美多商城項(xiàng)目開發(fā)小結(jié)

 更新時(shí)間:2022年02月16日 15:34:55   作者:皮阿瑪  
這篇文章主要介紹了python美多商城項(xiàng)目開發(fā)小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

項(xiàng)目總覽

創(chuàng)建虛擬環(huán)境

mkvirtualenv meiduo_malls

創(chuàng)建項(xiàng)目

django-admin startproject meiduo_malls

pip install django

運(yùn)行項(xiàng)目

python manage.py runserver [127.0.0.1:9000]

1.項(xiàng)目開發(fā)模式

選項(xiàng)技術(shù)選型
開發(fā)模式前后端不分離
后端框架Django + Jinja2模板引擎
前端框架Vue.js

說明:

前后端不分離的開發(fā)模式,是為了提高搜索引擎排名,即SEO。特別是首頁,詳情頁和列表頁。
頁面需要整體刷新:我們會(huì)選擇使用Jinja2模板引擎來實(shí)現(xiàn)。
頁面需要局部刷新:我們會(huì)選擇使用Vue.js來實(shí)現(xiàn)。

2. 項(xiàng)目運(yùn)行機(jī)制

3. 知識(shí)要點(diǎn)

1.項(xiàng)目開發(fā)模式

  • 前后端不分離,方便SEO。
  • 采用Django + Jinja2模板引擎 + Vue.js實(shí)現(xiàn)前后端邏輯。

2.項(xiàng)目運(yùn)行機(jī)制

  • 代理服務(wù):Nginx服務(wù)器(反向代理)
  • 靜態(tài)服務(wù):Nginx服務(wù)器(靜態(tài)首頁、商品詳情頁、...)
  • 動(dòng)態(tài)服務(wù):uwsgi服務(wù)器(美多商場業(yè)務(wù)場景)
  • 后端服務(wù):MySQL、Redis、Celery、RabbitMQ、Docker、FastDFS、Elasticsearch、Crontab
  • 外部接口:容聯(lián)云、QQ互聯(lián)、支付寶

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

美多商城項(xiàng)目的環(huán)境分為開發(fā)環(huán)境生產(chǎn)環(huán)境。

開發(fā)環(huán)境:用于編寫和調(diào)試項(xiàng)目代碼。
生產(chǎn)環(huán)境:用于項(xiàng)目線上部署運(yùn)行。

1. 新建配置文件

        開發(fā)環(huán)境 主應(yīng)用中新建setting包,dev.py,將原來的settings.py內(nèi)容復(fù)制進(jìn)去

        然后修改manage.py的默認(rèn)開發(fā)環(huán)境改為dev

 生產(chǎn)環(huán)境

wsgi.py中修改默認(rèn)生產(chǎn)環(huán)境prod

"""
WSGI config for meiduo_malls project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
 
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo_malls.settings.prod')
application = get_wsgi_application()

2. 配置jinja2模板引擎

pip install Jinja2

修改配置文件中的模板配置

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',
            ],
            # 補(bǔ)充Jinja2模板引擎環(huán)境
            'environment': 'meiduo_malls.utils.jinja2_env.environment',
        },
    },
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
]

主應(yīng)用中添加utils包 ->jinja2_env.py

from django.templatetags.static import static
from django.urls import reverse
 
from jinja2 import Environment
def environment(**options):
    env = Environment(**options)
    env.globals.update({
        'static': static,
        'url': reverse,
    })
    return env
"""
確??梢允褂媚0逡嬷械膡{ url('') }} {{ static('') }}這類語句 
在配置模板處配置使用
此配置信息可在官網(wǎng)查找復(fù)制

最后一步配置pycharm,模板語言由django 改為jinja2

 ssh root@82.157.143.241 連接linux

 3.配置mysql

使用寶塔安裝數(shù)據(jù)庫

想要實(shí)現(xiàn)遠(yuǎn)程可以操控,騰訊云防火墻中添加規(guī)則3306,寶塔中防火墻也要添加放行端口3306

1.新建MySQL數(shù)據(jù)庫:meiduo_mall

$ create database meiduo charset=utf8;

2.新建MySQL用戶

$ create user itheima identified by '123456';

3.授權(quán)itcast用戶訪問meiduo_mall數(shù)據(jù)庫

$ grant all on meiduo.* to 'itheima'@'%';

4.授權(quán)結(jié)束后刷新特權(quán)

$ flush privileges;

配置數(shù)據(jù)庫dev.py

# django數(shù)據(jù)遷移支持的MySQL5.6以上 Django框架生成的SQL語句不兼容MySQL5.5
# 以下代碼兼容低版本MySQL
from django.db.backends.mysql.base import DatabaseWrapper
DatabaseWrapper.data_types['DateTimeField'] = 'datetime'
 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 數(shù)據(jù)庫引擎
        'HOST': '82.157.143.241', # 數(shù)據(jù)庫主機(jī)
        'PORT': 3306, # 數(shù)據(jù)庫端口
        'USER': 'itheima', # 數(shù)據(jù)庫用戶名
        'PASSWORD': '123456', # 數(shù)據(jù)庫用戶密碼
        'NAME': 'meiduo' # 數(shù)據(jù)庫名字
        # 采用數(shù)據(jù)庫嚴(yán)格模式
        'OPTIONS': {
            'charset': 'utf8mb4',
            'autocommit': True,
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"',
        }
    }
}

安裝驅(qū)動(dòng)

pip install PyMySQL

 工程的__init__.py中配置初始化

from pymysql import install_as_MySQLdb
install_as_MySQLdb()

4.配置redis

pip install django-redis

django-redis使用說明文檔

點(diǎn)擊進(jìn)入文檔

配置可以遠(yuǎn)程訪問 /etc/redis.conf

#bind 127.0.0.1  ip注釋掉

daemonize yes    后臺(tái)運(yùn)行

requirepass zndroid   設(shè)置密碼

protected-mode no   保護(hù)模式設(shè)為no

遠(yuǎn)程訪問的話記得寶塔和騰訊云都要放行6379端口

dos遠(yuǎn)程連接redis-cli -h 82.157.143.241 -a zndroid

CACHES = {
    "default": { # 默認(rèn)
        "BACKEND": "django_redis.cache.RedisCache",
        #"LOCATION": "redis://127.0.0.1:6379/0",
        "LOCATION": "redis://:zndroid@82.157.143.241:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://:zndroid@82.157.143.241:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
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ù)。

5.配置工程日志

配置文件dev.py中添加

# 配置工程日志
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/meiduo.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)目的根目錄中創(chuàng)建目錄logs 創(chuàng)建meiduo.log文件和  .gitkeep文件(git的時(shí)候保證空目錄也可以git過去)

此時(shí)git的時(shí)候logs文件夾是空目錄,默認(rèn)Git是不允許提交一個(gè)空的目錄到版本庫上的

此時(shí)使用.gitkeep允許提交空目錄

使用方式

import logging
 
# 創(chuàng)建日志記錄器
logger = logging.getLogger('django')
# 輸出日志
logger.debug('測試logging模塊debug')
logger.info('測試logging模塊info')
logger.error('測試logging模塊error')

 6.配置靜態(tài)資源dev.py

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

到此這篇關(guān)于python美多商城一的文章就介紹到這了,更多相關(guān)python美多商城內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)顏色空間轉(zhuǎn)換程序(Tkinter)

    python實(shí)現(xiàn)顏色空間轉(zhuǎn)換程序(Tkinter)

    這篇文章主要介紹了基于Tkinter利用python實(shí)現(xiàn)顏色空間轉(zhuǎn)換程序,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 利用python合并csv文件的方式實(shí)例

    利用python合并csv文件的方式實(shí)例

    由于項(xiàng)目取數(shù)需要,要將兩個(gè)不同的csv文件合并到一個(gè)文件中,所以下面這篇文章主要給大家介紹了關(guān)于利用python合并csv文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Python的另外幾種語言實(shí)現(xiàn)

    Python的另外幾種語言實(shí)現(xiàn)

    這篇文章主要介紹了Python的另外幾種語言實(shí)現(xiàn),本文介紹了CPython、Jython、Python for .NET、PyPy、Stackless等其它幾種語言實(shí)現(xiàn)的Python,需要的朋友可以參考下
    2015-01-01
  • Python利用隨機(jī)函數(shù)生成變化圖形詳解

    Python利用隨機(jī)函數(shù)生成變化圖形詳解

    這篇文章主要介紹了如何在Python中利用隨機(jī)函數(shù)生成變化的圖形,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定吧參考價(jià)值,需要的可以了解一下
    2022-04-04
  • Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)說明

    Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)說明

    這篇文章主要介紹了Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)的說明,下面文章圍繞encode()和decode()方法的相相關(guān)資料展開內(nèi)容,具有一定的價(jià)值,需要的朋友卡通參考一下
    2021-12-12
  • 詳解Python的Django框架中manage命令的使用與擴(kuò)展

    詳解Python的Django框架中manage命令的使用與擴(kuò)展

    這篇文章主要介紹了Python的Django框架中manage命令的使用與擴(kuò)展,manage.py使得用戶借助manage命令在命令行中能實(shí)現(xiàn)諸多簡便的操作,需要的朋友可以參考下
    2016-04-04
  • [機(jī)器視覺]使用python自動(dòng)識(shí)別驗(yàn)證碼詳解

    [機(jī)器視覺]使用python自動(dòng)識(shí)別驗(yàn)證碼詳解

    這篇文章主要介紹了python自動(dòng)識(shí)別驗(yàn)證碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Django密碼存儲(chǔ)策略分析

    Django密碼存儲(chǔ)策略分析

    這篇文章主要介紹了Django密碼存儲(chǔ)策略分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 調(diào)試Django時(shí)打印SQL語句的日志代碼實(shí)例

    調(diào)試Django時(shí)打印SQL語句的日志代碼實(shí)例

    這篇文章主要介紹了調(diào)試Django時(shí)打印SQL語句的日志代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python3 動(dòng)態(tài)模塊導(dǎo)入與全局變量使用實(shí)例

    python3 動(dòng)態(tài)模塊導(dǎo)入與全局變量使用實(shí)例

    今天小編就為大家分享一篇python3 動(dòng)態(tài)模塊導(dǎo)入與全局變量使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評(píng)論