日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

商城(项目准备)

發布時間:2023/12/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 商城(项目准备) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

商城(項目準備)

1.項目準備

需求分析

  • 用戶部分
    注冊:圖片驗證碼,短信驗證碼
    登陸:第三方登陸(qq登陸)
    個人信息:郵箱填寫與驗證,瀏覽歷史記錄
    地址管理:省市地址信息加載,新增修改刪除地址,設置默認地址
    修改密碼

  • 商品部分
    首頁:商品分類,廣告控制
    商品列表
    商品詳情
    商品搜索

  • 購物車管理

  • 訂單部分
    提交訂單
    我的訂單
    訂單評價

  • 支付部分
    支付寶支付

2.項目架構

  • 項目采用前后端分離的應用模式
  • 前端使用Vue.js
  • 后端使用Django REST framework

3.創建工程

在git平臺創建工程
在碼云上創建新項目,創建基本的項目名稱

克隆路徑,用ssh來克隆,先在終端生成ssh 秘鑰,生成ssh方法如下:
cd .ssh
rm -rf id_rsa id_rsa.pub(刪除原來id_rsa id_rsa.pub)
cd
ssh-keygen -t rsh(執行命令)
cd .ssh
復制公鑰(cat id_rsa、)
復制私鑰(cat id_rsa.pub)
將秘鑰復制的碼云,我的ssh里面

git clone ssh路徑
git checkout -b dev(創建并切換分支到dev)

添加前端文件
將前端文件復制到meiduo子目錄中

在執行如下命令:
git add front_end_pc
git add front_end_pc 的時候會報錯誤CRLF will be replaced by LF in front_end_pc/place_order.html
LF 是換行符 (Linux :\n windows:\r mac :\r\n)
CR 是\r LF是\n

git status
git commit -m ‘add front_end_pc’
git push origin dev:dev

在碼云中發起合并(一般都是最后才做的)
在創建的文件中點擊Pull Request
然后選擇分支dev,點擊創建
進入合并頁面,選擇合并分支
接收合并請求

后端虛擬環境創建
mkvirtualenv meiduo_mall -p python3
pip install django==1.11.11
pip install djangorestframework
pip install pymysql

前端文件開發預覽
安裝node.js版本控制工具nvm
安裝node 相當于在python中安裝一個解釋器
live-server 可以定時刷新,不會使用緩存

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

退出重新進入終端,安裝nvm
nvm install node

安裝live-server
npm install -g live-server

這個訪問靜態文件的時候,需要cd front_end_pc 路徑下,執行
live-server 命令

創建數據庫
現在root數據庫中,創建meiduo29數據庫
create database meiduo29 default charset=utf8;
再創建一個數據庫用戶,專門存放meiduo29的庫

create user meiduo identified by ‘meiduo’;

grant all on meiduo_mall.* to ‘meiduo’@’%’;

flush privileges;

說明:

第一句:創建用戶賬號 meiduo, 密碼 meiduo (由identified by 指明)
第二句:授權meiduo_mall數據庫下的所有表(meiduo_mall.*)的所有權限(all)給用戶meiduo在以任何ip訪問數據庫的時候(‘meiduo’@’%’)
第三句:刷新生效用戶權限

4.配置

  • 修改settings/dev.py 文件中的路徑信息
    在工程目錄/meiduo_mall/apps,創建子應用users

    INSTALLED_APPS = ['meiduo_mall.apps.users.apps.UsersConfig',]
  • 使用sys.path添加<BASE_DIR>/apps目錄,即可添加apps應用的導包路徑
    添加導包路徑

    import sys sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))2. INSTALLED_APPS 在INSTALLED_APPS中添加rest_framework INSTALLED_APPS = ['rest_framework', ]
  • 數據庫

    DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1', # 數據庫主機'PORT': 3306, # 數據庫端口'USER': 'meiduo', # 數據庫用戶名'PASSWORD': 'meiduo', # 數據庫用戶密碼'NAME': 'meiduo_mall' # 數據庫名字}}
  • 注意:

    記得在meiduo/meiduo_mall/init.py文件中添加

    import pymysql pymysql.install_as_MySQLdb()
  • Redis
  • 安裝django-redis,
    django_redis
    為了避免儲存新的原生連接所產生的另一份設置Django-redis提供方法get_reids_connection(alians)使你獲得可重用的連接字符串
    from django_redis import get_redis_connection
    con = get_redis_connection(‘default’)

    django_redis 依賴于redis,django_redis 已經幫我們創建好了連接對象,get_redis_connection是Django_redis里面的連接對象

    并配置

    CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://10.211.55.5:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}},"session": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://10.211.55.5:6379/1","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}}SESSION_ENGINE = "django.contrib.sessions.backends.cache"SESSION_CACHE_ALIAS = "session"
  • 本地化語言與時區

    LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
  • 日志
    formatters
    verbose
    levelname(等級)
    asctime(時間)
    (module)s%(lineno)d%(message)s 模塊里面第幾行信息

    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.utils.log.RequireDebugTrue',},},'handlers': {'console': {'level': 'DEBUG','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,},}}
  • 異常處理
    context 字典 可以指出哪個視圖函數

    新建utils/exceptions.pyfrom rest_framework.views import exception_handler as drf_exception_handlerimport loggingfrom django.db import DatabaseErrorfrom redis.exceptions import RedisErrorfrom rest_framework.response import Responsefrom rest_framework import status獲取在配置文件中定義的logger,用來記錄日志logger = logging.getLogger('django')def exception_handler(exc, context):"""自定義異常處理:param exc: 異常:param context: 拋出異常的上下文:return: Response響應對象"""# 調用drf框架原生的異常處理方法response = drf_exception_handler(exc, context)if response is None:view = context['view']if isinstance(exc, DatabaseError) or isinstance(exc, RedisError):# 數據庫異常logger.error('[%s] %s' % (view, exc))response = Response({'message': '服務器內部錯誤'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)return response
  • 配置文件中添加

    REST_FRAMEWORK = {# 異常處理'EXCEPTION_HANDLER': 'meiduo_mall.utils.exceptions.exception_handler', }

    總結

    以上是生活随笔為你收集整理的商城(项目准备)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。