【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"

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

git config -l

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

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',                       # 数据库名
    },
}

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

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()

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳涛@泰山医院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值