美多商城项目准备

1.开发流程

在这里插入图片描述
在这里插入图片描述

2.需求分析

  1. 需求分析原因:

    1. 可以整体的了解项目的业务流程和主要的业务需求。
    2. 项目中,需求驱动开发。即开发人员需要以需求为目标来实现业务逻辑。
  2. 需求分析方式:

    1. 企业中,借助 产品原型图 分析需求。
    2. 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应的业务及响应处理。
  3. 需求分析内容:

    1. 页面及其业务流程和业务逻辑。
  4. 提示:

    1. 我们在借助示例网站作为原型图来分析需求
      在这里插入图片描述
  5. 知识点:

    1. 需求分析原因:需求驱动开发
    2. 需求分析方式:企业中,使用产品原型图
    3. 需求分析内容:页面及业务逻辑
    4. 需求分析结果:划分业务模块,明确每个模块下的主要功能,并以子应用的形式进行管理

2. 架构设计

  1. 分析
    1. 分析可能用到的技术点
    2. 前后端是否分离
    3. 前端使用哪些框架
    4. 后端使用哪些框架
    5. 选择什么数据库
    6. 如何实现缓存
    7. 是否搭建分布式服务
    8. 如何管理源代码
  2. 项目架构设计
    在这里插入图片描述

3.数据库设计

  1. 数据库表的设计至关重要
  2. 根据项目需求,设计合适的数据库表
  3. 数据库表在前期如果设计不合理,后期随需求增加会变得难以维护

4. 集成测试

  1. 在测试阶段要留意测试反馈平台的bug报告

5.创建工程及配置

  1. 创建远程仓库
  2. 克隆项目代码仓库
    1. 进入本地项目目录

      $ mkdir ~/projects
      $ cd projects/

    2. 克隆仓库

      $ git clone 仓库地址

  3. 创建美多商城工程
    1. 进入本地项目仓库

    $ cd ~/projects/meiduo_project/

    1. 创建美多商城虚拟环境,安装Django框架

      $ mkvirtualenv -p python3 meiduo_mall
      $ pip install django==1.11.11

    2. 创建美多商城Django工程

    $ django-admin startproject meiduo_mall

    1. 创建工程完成后:运行程序,测试结果。
      1. pycharm快捷启动服务
      2. 配置启动项目的:Parameters: runserver 端口

6.配置开发环境

  1. 目的: 区分开发环境 与线上环境

    1. 开发环境:用于编写和测试项目代码
    2. 生产环境:用于项目线上的部署
  2. 步骤:

    1. 新建配置文件

    2. 准备配置文件目录

      1. 新建包,命名为settings,作为配置文件目录
    3. 准备开发和生产环境配置文件

      1. 在配置包settings中,新建开发和生产环境配置文件
      2. 在这里插入图片描述
    4. 准备开发环境配置内容

      1. 将默认的配置文件settings.py中内容拷贝至dev.py
    5. 指定开发环境配置文件

      1. 在这里插入图片描述
  3. 配置完成后:运行程序,测试结果。

7.配置Jinja2模板引擎

美多商城的模板采用Jinja2模板引擎。

  1. 安装Jinja2扩展包

$ pip install Jinja2

  1. 配置Jinja2模板引擎
    新建模板文件templates–》选中右键–>Mark directorys–>templates fold–>Python Template…–>Template language–>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’,
],
},
},
]

  1. 补充Jinja2模板引擎环境
    1. 创建Jinja2模板引擎环境配置文件

    2. 在这里插入图片描述

    3. 编写Jinja2模板引擎环境配置代码

      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
      “”"
      确保可以使用模板引擎中的{{ url(’’) }} {{ static(’’) }}这类语句
      “”"

    4. 加载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’,
      ],
      # 补充Jinja2模板引擎环境
      ‘environment’: ‘meiduo_mall.utils.jinja2_env.jinja2_environment’,
      },
      },
      ]

  2. 配置完成后:运行程序,测试结果。

8.配置MySQL数据库

美多商城数据存储服务采用MySQL数据库。
为实现跨机器访问,在虚拟机创建数据库

  1. 新建MySQL数据库

    1. 新建MySQL数据库:meiduo_mall

      $ create database meiduo charset=utf8;

    2. 新建MySQL用户

      $ create user itheima identified by ‘123456’;

    3. 授权itcast用户访问meiduo_mall数据库

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

    4. 授权结束后刷新特权

      $ flush privileges;

  2. 配置MySQL数据库

    DATABASES = {
    ‘default’: {
    ‘ENGINE’: ‘django.db.backends.mysql’, # 数据库引擎
    ‘HOST’: ‘127.0.0.1’, # 数据库主机
    ‘PORT’: 3306, # 数据库端口
    ‘USER’: ‘itheima’, # 数据库用户名
    ‘PASSWORD’: ‘123456’, # 数据库用户密码
    ‘NAME’: ‘meiduo’ # 数据库名字
    },
    }

    1. 可能出现的错误

      Error loading MySQLdb module: No module named ‘MySQLdb’.

    2. 出现错误的原因:

      Django中操作MySQL数据库需要驱动程序MySQLdb
      目前项目虚拟环境中没有驱动程序MySQLdb

    3. 解决办法:

      1. 安装PyMySQL扩展包
        因为MySQLdb只适用于Python2.x的版本,Python3.x的版本中使用PyMySQL替代MySQLdb
  3. 安装PyMySQL扩展包

    1. 安装驱动程序

      $ pip install PyMySQL

    2. 在工程同名子目录的__init__.py文件中,添加如下代码:

      from pymysql import install_as_MySQLdb
      install_as_MySQLdb()

  4. 配置完成后:运行程序,测试结果。

9.配置Redis数据库

美多商城数据缓存服务或保持状态数据采用Redis数据库。

  1. 安装django-redis扩展包

    1. 安装django-redis扩展包

      $ pip install django-redis

  2. django-redis使用说明文档
    文档

  3. 配置Redis数据库

    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. default:
      默认的Redis配置项,采用0号Redis库。
    2. session:
      状态保持的Redis配置项,采用1号Redis库。
    3. SESSION_ENGINE
      修改session存储机制使用Redis保存。
    4. SESSION_CACHE_ALIAS:
      使用名为"session"的Redis配置项存储session数据。
  4. 配置完成后:运行程序,测试结果。

10.配置工程日志

美多商城的日志记录采用logging模块。
目的:使用日志文件记录网站输出信息
原因:目前终端输出的信息再程序重启后会消失,我们无法记录输出信息的历史;项目部署后,是在后台运行程序的,没有终端实时的显示输出信息;日志如果能够收集,将来可以通过日志分析用户的行为

  1. 配置工程日志

    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, # 是否继续传递日志信息
    ‘level’: ‘INFO’, # 日志器接收的最低日志级别
    },
    }
    }

  2. 准备日志文件目录
    在这里插入图片描述

  3. 日志记录器的使用

    import logging
    #创建日志记录器
    logger = logging.getLogger(‘django’)
    #输出日志
    logger.debug(‘测试logging模块debug’)
    logger.info(‘测试logging模块info’)
    logger.error(‘测试logging模块error’)

  4. Git管理工程日志
    提示1:
    开发过程中,产生的日志信息不需要代码仓库进行管理和记录。
    提示2:
    建立代码仓库时,生成的忽略文件中已经默认忽略掉了 *.log 。
    在这里插入图片描述

    问题:
    logs文件目录需求被Git仓库记录和管理。
    当把 *.log 都忽略掉后,logs文件目录为空。
    但是,Git是不允许提交一个空的目录到版本库上的。
    解决:
    在空文件目录中建立一个 .gitkeep 文件,然后即可提交。
    在这里插入图片描述

  5. 配置完成后:运行程序,测试结果。

  6. 知识要点
    本项目最低日志等级设置为:INFO
    创建日志记录器的方式:

    logger = logging.getLogger(‘django’)

    日志记录器的使用:

    logger.info(‘测试logging模块info’)

    在日志loggers选项中可以指定多个日志记录器

11.配置前端静态文件

美多商城项目中需要使用静态文件,比如 css、images、js 等等。

  1. 准备静态文件
    在这里插入图片描述

  2. 指定静态文件加载路径

    STATIC_URL = ‘/static/’
    #配置静态文件加载路径
    STATICFILES_DIRS = [os.path.join(BASE_DIR, ‘static’)]

  3. 配置完成后:运行程序,测试结果。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值