• 【Python百日进阶-WEB开发】Day169 - Django案例:01工程创建和基本配置


    文章目录

    一、项目开发流程

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

    1.1 说明:

    1.架构设计

    • 分析可能用到的技术点
    • 前后端是否分离
    • 前端使用哪些框架
    • 后端使用哪些框架
    • 选择什么数据库
    • 如何实现缓存
    • 是否搭建分布式服务
    • 如何管理源代码
      2.数据库设计
    • 数据库表的设计至关重要
    • 根据项目需求,设计合适的数据库表
    • 数据库表在前期如果设计不合理,后期随需求增加会变得难以维护
      3.集成测试
    • 在测试阶段要留意测试反馈平台的bug报告

    1.2 项目需求分析

    1.需求分析原因:

    • 可以整体的了解项目的业务流程和主要的业务需求
    • 项目中,需求驱动开发。即开发人员需要以需求为目标来实现业务逻辑。
      2.需求分析方式
    • 企业中,借助产品原型图分析需求
    • 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应的业务及响应处理。
      3.需求分析内容:
    • 页面及其业务流程和业务逻辑。
      4.提示:
    • 我们现在借助示例网站作为原型图来分析需求。

    1.3 归纳项目主要模块

    为了方便项目管理及多人协同开发,我们根据需求将功能划分为不同的模块。
    将来在项目中,每个模块都会对应一个子应用进行管理和解耦。
    模块 功能
    用户: 注册、登录、用户中心
    验证: 图形验证、短信验证
    第三方登录: QQ登录
    首页广告: 首页广告
    商品: 商品列表、商品搜索、商品详情
    购物车: 购物车管理、购物车合并
    订单: 确认订单、提交订单
    支付: 支付宝支付、订单商品评价
    MIS系统: 数据统计、用户管理、权限管理、商品管理、订单管理

    二、项目架构设计

    2.1 项目开发模式

    选项 技术选型
    开发模式:前后端不分离
    后端框架: Django+ Jinja22模板引擎
    前端框架: Vue.js
    说明:

    • 前后端不分离的开发模式,是为了提高搜索引擎排名,即SEO。特别是首页,详情页和列表页。搜索引擎爬虫请求到的页面数据就是渲染好的完整页面,搜索引擎可以直接解析建立索引。
    • 页面需要整体刷新:我们会选择使用 Jinja2模板引擎来实现
    • 页面需要局部刷新.:我们会选择使用 Vue.js来实现。

    2.2 项目运行机制

    在这里插入图片描述

    三、Gitee工程创建

    3.1 准备Gitee远程项目代码仓库

    源码托管网站:码云( https://gitee.com/

    3.1.1 注册码云账号,安装git到本地

    3.1.1.1 注册

    首先打开码云的网站https://gitee.com/,注册账户。已有账户的可以直接登录。

    3.1.1.2 下载git

    打开git官网https://git-scm.com/downloads,选择操作系统,下载客户端。(原则上点了下图所示的windows后即会自动下载。如果没有自动下载,则可以在这个网页https://git-scm.com/download/win手动点击下载。)
    在这里插入图片描述

    3.1.1.3 安装配置

    下载后双击这exe文件,开始安装,可以一路下一步,进行安装。有需要的可以自己调整设置。
    在这里插入图片描述

    安装完成后,在开始菜单里找到Git中的Git Bash,点击打开,会出来一个类似命令行窗口的东西,这说明Git成功安装了。
    在这里插入图片描述
    然后可以用下面所示的命令配置用户名和邮箱,也可以先跳过。

    git config --global user.name "yuetaope"
    git config --global user.email "13953800865@163.com"
    
    • 1
    • 2

    如果配置了,配置后可以查询配置情况。

    git config -l
    
    • 1

    在这里插入图片描述

    3.1.2 创建源码远程仓库: meiduo_project

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

    3.1.3 克隆项目

    3.1.3.1 复制项目地址

    在这里插入图片描述
    https://gitee.com/yuetaope/meiduo_project.git

    3.1.3.2 启动 Git Bash 克隆项目

    1、启动 Git Bash
    2、切换当前路径到e:\projects
    3、执行克隆代码

    git clone https://gitee.com/yuetaope/meiduo_project.git
    
    • 1

    4、输入码云的用户名和密码,执行克隆‘
    在这里插入图片描述
    5、查看本地文件
    在这里插入图片描述

    3.2 创建Gitee本地工程项目

    3.2.1 vscode 提交 gitee 流程

    3.2.1.1 vs code 打开项目目录

    在这里插入图片描述

    3.2.1.2 打开忽略文件,添加 .idea 类型的文件,

    任何的增加、删除、修改操作都会显示在更改中
    在这里插入图片描述

    3.2.1.3 点击+,将修改暂存

    在这里插入图片描述

    3.2.1.4 输入本次修改的描述,点击√,将暂存提交到本地库

    在这里插入图片描述

    3.2.1.5 推送到码云

    在这里插入图片描述

    3.2.1.6 刷新码云

    在这里插入图片描述

    3.2.2 创建项目

    3.2.2.1 创建虚拟环境

    在gitee项目中创建虚拟环境
    E:\projects\meiduo_project> virtualenv meiduo_mall

    3.2.2.2 进入虚拟环境

    E:\projects\meiduo_project> cd meiduo_mall

    3.2.2.3 激活虚拟环境

    E:\projects\meiduo_project\meiduo_mall> scripts\activate

    3.2.2.4 安装django

    (meiduo_mall) PS E:\projects\meiduo_project\meiduo_mall>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django==2.2.9

    3.2.2.5 创建项目(注意最后的 . )

    一定注意最后有个. 代表在当前目录meiduo_mall 创建meiduo_mall 这个项目,否则会再生成下级目录meiduo_mall
    (meiduo_mall) PS E:\projects\meiduo_project\meiduo_mall> django-admin startproject meiduo_mall .
    创建后的目录结构如下
    在这里插入图片描述
    在这里插入图片描述

    3.3 克隆项目到本地

    克隆项目到本地的关键是虚拟环境的配置,直接克隆下来的环境在本机是没法运行的,所以一定要先安装虚拟环境再克隆项目。

    3.3.1 新建虚拟环境

    e盘新建meiduo_project文件夹

    e:\meiduo_project
    cmd
    virtualenv meiduo_mall
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.3.2 修改meiduo_project文件夹为meiduo_project_current

    3.3.3 启动 Git Bash ,克隆项目到e盘

    cd e:
    git clone https://gitee.com/yuetaope/meiduo_project.git
    
    • 1
    • 2

    在这里插入图片描述

    3.3.4 删除、复制克隆文件

    删除克隆文件夹meiduo_project\meiduo_mall下的 pyvenv.cfg 文件和 scripts 文件夹
    在这里插入图片描述

    复制克隆文件夹meiduo_project下的所有文件到 meiduo_project_current 中
    在这里插入图片描述

    3.3.5 更改文件夹名称

    删除E:\meiduo_project,将 E:\meiduo_project_currrent 改为 E:\meiduo_project

    3.3.6 vscode打开文件夹E:\meiduo_project\meiduo_mall

    配置python解释器为 E:\meiduo_project\meiduo_mall\scripts\python.exe

    3.3.7 查看安装包

    ctrl+shift+~,进入虚拟环境终端,pip list查看安装包
    在这里插入图片描述

    3.3.8 安装包

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  Django==2.2.9
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  pyMySQL
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  cryptography
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  jinja2
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pylint pylint_django
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  django-redis
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.3.9 解决编码错误

    “E:\projects\meiduo_project\meiduo_mall\lib\site-packages\django\db\backends\mysql\operations.py” 145-147行改为

    if query is not None:
        query = query.encode('utf-8').decode(errors='replace')
    return query
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    系统正常启动,克隆完成

    3.3.10 克隆推送

    在这里插入图片描述

    四、配置开发和生产环境

    4.1 新建开发环境配置文件

    在这里插入图片描述

    1. 在meiduo_mall.settings.py同级建立配置文件包settings,包内需包含或创建__init__.py文件
    2. 把原来的配置文件meiduo_mall.settings.py,移动到文件包settings中,改名为dev.py文件
    3. 修改manage.py中的配置文件路径为:meiduo_mall.settings.dev,即指向配置文件包中的开发环境配置文件
      在这里插入图片描述

    4.1 新建生产环境配置文件

    1. settings包中新建prod.py,内容暂时留空,等到上线部署的时候再填。
    2. 修改wsgi.py中的配置文件路径为:meiduo_mall.settings.prod,即指向配置文件包中的生产环境配置文件。
      在这里插入图片描述

    五、配置jinja2渲染模板

    5.1 安装jinja2扩展包

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jinja2

    5.2 配置jinja2模板引擎

    1. dev.py配置环境中,Django模板引擎复制一份,这样就有了两个模板引擎
    2. 修改第一个模板引擎 ‘BACKEND’: ‘django.template.backends.jinja2.Jinja2’, # 配置jinja2模板引擎
    3. 项目中创建templates文件夹
    4. jinja2模板配置 ‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], # 配置模板文件加载路径

    5.3 补充jinja2模板引擎的环境变量

    目的:确保jinja2模板引擎的{{ static(‘’) }} {{ url(‘’) }} 这类语句可以使用,方便读取静态文件和做重定向
    在这里插入图片描述

    5.3.1 创建jinja2模板引擎环境配置文件

    1. 项目中创建utils包,包含或新建__init__.py文件
    2. utils包中新建jinja2_env.py文件
    from jinja2 import Environment
    from django.urls import reverse
    from django.contrib.staticfiles.storage import staticfiles_storage
    
    def jinja2_environment(**options):
        """ jinja2环境 """
    
        # 创建环境对象
        env = Environment(**options)
    
        # 自定义语法:{{ static('静态文件相对路径') }}  {{ url('路由的命名空间') }}
        env.globals.update({
            'static': staticfiles_storage.url,  # 获取静态文件的前缀
            'url': reverse,         # 用django的重定向函数reverse接管jinja2模板引擎的url函数,反向解析
        })
    
        # 返回环境对象
        return env
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5.3.2 加载jinja2模板引擎环境

    OPTIONS列表中新建键值对
    ‘environment’: ‘meiduo_mall.utils.jinja2_env.jinja2_environment’, # 补充jinja2模板引擎环境
    在这里插入图片描述

    六、配置MySQL数据库

    6.1 新建MySQL数据库

    6.1.1 新建数据库meiduo

    create database meiduo charset=utf8;
    show databases;
    在这里插入图片描述

    6.1.2 新建MySQL用户

    create user yuetaope identified by ‘yuetaope’;

    6.1.3 授权用户访问数据库

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

    6.1.4 刷新授权

    flush privileges;

    在这里插入图片描述

    6.2 配置MySQL数据库

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

    配置完会报错
    在这里插入图片描述

    6.3 安装MySQL扩展包

    1. 安装MySQL驱动程序扩展包
      pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyMySQL
    2. 在工程同名子目录的__int__.py中,添加代码
    from pymysql import install_as_MySQLdb
    
    install_as_MySQLdb()
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    配置完报错
    在这里插入图片描述

    6.4 变更MySQL8.0的密码验证方式

    6.4.1 安装密码包

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cryptography

    6.4.2 变更密码认证方式

    use meiduo;
    alter user ‘yuetaope’@‘%’ identified with mysql_native_password by ‘yuetaope’;
    flush privileges;
    在这里插入图片描述
    配置完报错
    在这里插入图片描述

    6.5 解决编码错误

    “E:\projects\meiduo_project\meiduo_mall\lib\site-packages\django\db\backends\mysql\operations.py” 145-147行改为

    if query is not None:
        query = query.encode('utf-8').decode(errors='replace')
    return query
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    系统启动,配置完成

  • 相关阅读:
    [Document]VectoreStoreToDocument开发
    OAuth2的使用场景与理解(图解防止忘记)
    【INTEL(ALTERA)】Nios II软件开发人员手册中设计位置的错误示例
    安科瑞电池能源管理平台介绍
    【大数据开发技术】实验02-Hadoop常用命令
    互动设计:深入了解用户体验的关键
    VUE系列 ---- 网络模块axios(一 )
    Python中的函数
    给电脑一键重装系统后找回照片查看器的方法
    实景三维建设背景下,三维GIS面临哪些挑战?
  • 原文地址:https://blog.csdn.net/yuetaope/article/details/123002246