当前位置:   article > 正文

06-Django项目实战

django项目实战

项目需求分析

需求分析原因

  • 项目中,**需求驱动开发,**即开发人员需要以需求为目标来实现业务逻辑。

需求分析方式

  • 企业中,借助产品原型图分析需求。
  • 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应的业务及响应处理。
  • 提示:我们现在假借示例网站作为原型图来分析需求。

需求分析内容

  • 页面及页面上的业务逻辑
  • 归纳业务逻辑并划分模块

1. 项目主要页面介绍

2. 归纳项目主要模块

模块功能
验证图形验证、短信验证
用户注册、登录、用户中心(基本信息、邮箱激活、收货地址、我的订单、修改密码)
第三方登录QQ登录
首页广告首页广告
商品商品列表、商品搜索、商品详情、商品浏览记录
购物车购物车管理、购物车合并
订单确认订单、提交订单、订单商品评价
支付支付宝支付

3. 知识要点

  1. 需求分析原因:需求驱动开发。
  2. 需求分析方式:企业中,使用原型图分析需求。
  3. 需求分析内容:了解页面及业务逻辑,归纳业务模块。
  4. 需求分析结果:划分业务模块,明确每个模块下的主要功能。

项目架构设计

1. 项目开发模式

选项技术选型
开发模式前后端分离
后端框架Django
前端框架Vue.js

说明:

  • 页面需要局部刷新:我们会选择使用Vue.js来实现。

2. 项目架构设计

架构

3. 知识要点

项目主要架构

  • 帮助我们整体把握项目的工作流程和主要的业务场景。
  • 项目开发时,明确工作的重心是实现后端业务逻辑

工程创建和配置

创建图灵商城工程

1.创建/进入本地文件夹

cd name_project/
  • 1

2.创建项目虚拟环境,安装Django框架

conda create -n name_project  python
conda activate name_project
pip install django
  • 1
  • 2
  • 3

3.创建Django工程

django-admin startproject name
  • 1

创建工程完成后:运行程序,测试结果。

配置开发目录

截图

  • libs 存放第三方的库文件
  • utils 存放项目自己定义的公共函数或类等
  • apps 存放Django的应用
  • templates 模板文件存放文件夹
  • logs 日子文件目录

将apps文件夹添加到系统路径,settings.py里添加下面这行代码

sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
  • 1

配置MySQL数据库

1. 新建MySQL数据库

1.新建MySQL数据库:name

create database name charset=utf8;
  • 1

2.新建MySQL用户

$ create user poppies identified by 'root';
  • 1

3.授权poppies用户访问name数据库

$ grant all on name.* to 'poppies'@'%';
  • 1

4.授权结束后刷新特权

$ flush privileges;
  • 1

2. 配置MySQL数据库

文档

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'HOST': '127.0.0.1', # 数据库主机
        'PORT': 3306, # 数据库端口
        'USER': 'poppies', # 数据库用户名
        'PASSWORD': 'root', # 数据库用户密码
        'NAME': 'name' # 数据库名字
    },
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. 安装mysqlclient扩展包

1.安装驱动程序

$ pip install mysqlclient
  • 1

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

配置Redis数据库

1. 安装django-redis扩展包

1.安装django-redis扩展包

$ pip install django-redis
  • 1

2.django-redis使用说明文档

点击进入文档

2. 配置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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

default:

  • 默认的Redis配置项,采用0号Redis库。

session:

  • 状态保持的Redis配置项,采用1号Redis库。

SESSION_ENGINE

  • 修改session存储机制使用Redis保存。

SESSION_CACHE_ALIAS:

  • 使用名为"session"的Redis配置项存储session数据

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

配置工程日志

文档

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.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(BASE_DIR, 'logs/meiduo.log'),  # 日志文件的位置
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {  # 日志器
        'django': {  # 定义了一个名为django的日志器
            'handlers': ['console', 'file'],  # 可以同时向终端与文件中输出日志
            'propagate': True,  # 是否继续传递日志信息
            'level': 'INFO',  # 日志器接收的最低日志级别
        },
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

2. 准备日志文件目录

在这里插入图片描述

3. 日志记录器的使用

不同的应用程序所定义的日志等级可能会有所差别,分的详细点的会包含以下几个等级:

  • FATAL/CRITICAL = 重大的,危险的
  • ERROR = 错误
  • WARNING = 警告
  • INFO = 信息
  • DEBUG = 调试
  • NOTSET = 没有设置
import logging

# 创建日志记录器
logger = logging.getLogger('django')
# 输出日志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

用户注册

1. 创建用户模块应用

apps包下创建应用users

python ../manage.py startapp users
  • 1

在这里插入图片描述

2. 注册用户模块应用

INSTALLED_APPS = [
    ...

    'apps.users',
]
  • 1
  • 2
  • 3
  • 4
  • 5

注册完users应用后,运行测试程序。
o’)

输出日志

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




# 用户注册

### 1. 创建用户模块应用

> **在**`apps`**包下创建应用**`users`

```py
$ python ../manage.py startapp users
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

[外链图片转存中…(img-Ikuct9Ad-1691146494538)]

2. 注册用户模块应用

INSTALLED_APPS = [
    ...

    'apps.users',
]
  • 1
  • 2
  • 3
  • 4
  • 5

注册完users应用后,运行测试程序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/543972
推荐阅读
相关标签
  

闽ICP备14008679号