【Django开发】0到1美多商城项目md教程第1篇:欢迎来到美多商城!【附代码文档】

本系列文章md笔记(已分享)主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django + Jinja2模板引擎 + Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页、uwsgi服务器(美多商场业务场景),后端服务:MySQL、Redis、Celery、RabbitMQ、Docker、FastDFS、Elasticsearch、Crontab,外部接口:容联云、互联、。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


欢迎来到美多商城!

项目准备

项目介绍

项目需求分析

需求分析原因:

  • 可以整体的了解项目的业务流程和主要的业务需求。
  • 项目中,需求驱动开发。即开发人员需要以需求为目标来实现业务逻辑。

需求分析方式:

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

需求分析内容:

  • 页面及其业务流程和业务逻辑

提示:

  • 我们现在借助 示例网站 作为原型图来分析需求。

1. 项目主要页面介绍

1.首页广告

2.注册

3.登录

4.登录

5.个人信息

6.收货地址

7.我的订单

8.修改密码

9.商品列表

10.商品搜索

11.商品详情

12.购物车

13.结算订单

14.提交订单

15.支付

16.支付结果处理

17.订单商品评价

2. 归纳项目主要模块

为了方便项目管理及多人协同开发,我们根据需求将功能划分为不同的模块。

将来在项目中,每个模块都会对应一个子应用进行管理和解耦

|模块|功能| |---|---| |验证|图形验证、短信验证| |用户|注册、登录、用户中心| |第三方登录|登录| |首页广告|首页广告| |商品|商品列表、商品搜索、商品详情| |购物车|购物车管理、购物车合并| |订单|确认订单、提交订单| |支付|支付、订单商品评价| |MIS系统|数据统计、用户管理、权限管理、商品管理、订单管理|

3. 知识要点

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

项目架构设计

1. 项目开发模式

|选项|技术选型| |---|---| |开发模式|前后端不分离| |后端框架|Django + Jinja2模板引擎| |前端框架|Vue.js|

说明:

  • 前后端不分离的开发模式,是为了提高搜索引擎排名,即SEO。特别是首页,详情页和列表页。
  • 页面需要整体刷新:我们会选择使用Jinja2模板引擎来实现。
  • 页面需要局部刷新:我们会选择使用Vue.js来实现。

2. 项目运行机制

3. 知识要点

  1. 项目开发模式

  2. 前后端不分离,方便SEO

  3. 采用Django + Jinja2模板引擎 + Vue.js实现前后端逻辑。

  4. 项目运行机制

  5. 代理服务:Nginx服务器(反向代理)

  6. 静态服务:Nginx服务器(静态首页、商品详情页、...)
  7. 动态服务:uwsgi服务器(美多商场业务场景)
  8. 后端服务:MySQL、Redis、Celery、RabbitMQ、Docker、FastDFS、Elasticsearch、Crontab
  9. 外部接口:容联云、互联、

工程创建和配置

创建工程

美多商城项目源代码采用远程仓库托管

1. 准备项目代码仓库

1.源码托管网站

  • 码云([

    2.创建源码远程仓库:meiduo_project

2. 克隆项目代码仓库

1.进入本地项目目录

bash $ mkdir ~/projects $ cd projects/

2.克隆仓库

bash $ git clone

3. 创建美多商城工程

1.进入本地项目仓库

bash $ cd ~/projects/meiduo_project/

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

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

3.创建美多商城Django工程

bash $ django-admin startproject meiduo_mall

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

配置开发环境

美多商城项目的环境分为开发环境生产环境

  • 开发环境:用于编写和调试项目代码。
  • 生产环境:用于项目线上部署运行。

1. 新建配置文件

  1. 准备配置文件目录

  2. 新建包,命名为settings,作为配置文件目录

  3. 准备开发和生产环境配置文件

  4. 在配置包settings中,新建开发和生产环境配置文件

  5. 准备开发环境配置内容

  6. 将默认的配置文件settings.py中内容拷贝至dev.py

2. 指定开发环境配置文件

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

配置Jinja2模板引擎

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

1. 安装Jinja2扩展包

bash $ pip install Jinja2

2. 配置Jinja2模板引擎

python 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', ], }, }, ]

3. 补充Jinja2模板引擎环境

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

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

```python 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('') }}这类语句 """ ```

3.加载Jinja2模板引擎环境

python 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', }, }, ]

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

配置MySQL数据库

美多商城数据存储服务采用MySQL数据库

1. 新建MySQL数据库

1.新建MySQL数据库:meiduo_mall

bash $ create database meiduo charset=utf8;

2.新建MySQL用户

bash $ create user itheima identified by '123456';

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

bash $ grant all on meiduo.* to 'itheima'@'%';

4.授权结束后刷新特权

bash $ flush privileges;

2. 配置MySQL数据库

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

可能出现的错误

  • Error loading MySQLdb module: No module named 'MySQLdb'.

出现错误的原因:

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

解决办法:

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

3. 安装PyMySQL扩展包

1.安装驱动程序

bash $ pip install PyMySQL

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

```python from pymysql import install_as_MySQLdb

install_as_MySQLdb() ```

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

配置Redis数据库

美多商城数据缓存服务采用Redis数据库

1. 安装django-redis扩展包

1.安装django-redis扩展包

bash $ pip install django-redis

2.django-redis使用说明文档

[点击进入文档](

2. 配置Redis数据库

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

default:

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

session:

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

SESSION_ENGINE

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

SESSION_CACHE_ALIAS:

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

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

配置工程日志

美多商城的日志记录采用logging模块

1. 配置工程日志

python 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. 日志记录器的使用

```python 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. 知识要点

  1. 本项目最低日志等级设置为:INFO
  2. 创建日志记录器的方式: python logger = logging.getLogger('django')

  3. 日志记录器的使用: python logger.info('测试logging模块info')

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

配置前端静态文件

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

1. 准备静态文件

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

```python STATIC_URL = '/static/'

配置静态文件加载路径

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] ```

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

  • [

用户注册

展示用户注册页面

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/526847.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊跨境电商名词解释

亚马逊界面名词解释 最常用的名词解释总结: ASIN:亚马逊标准标识号,也就是每个商品的编码标识,每个商品的都不同,可以把它当成该商品的“身份证号”。由亚马逊随机生成的字母数字组合。 SKU:库存进出计量单位。 Listing&#xf…

Speech Processing (LASC11158)

大纲 PHON – phonetics and phonology 1. Phonetics and Representations of Speech2. Acoustics of Consonants and VowelsSIGNALS – signal processing, with a focus on speech signals 3. Digital Speech Signals4. the Source-Filter ModelTTS – text-to-speech synth…

Vue+SpringBoot打造数字化社区网格管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5.1 查询企事业单位5.2 查询流动人口5.3 查询精准扶贫5.4 查询案件5.5 查询人口 六、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数字化社区网格管理系统&#xf…

PostgreSQL 安装部署

文章目录 一、PostgreSQL部署方式1.Yum方式部署2.RPM方式部署3.源码方式部署4.二进制方式部署5.Docker方式部署 二、PostgreSQL部署1.Yum方式部署1.1.部署数据库1.2.连接数据库 2.RPM方式部署2.1.部署数据库2.2.连接数据库 3.源码方式部署3.1.准备工作3.2.编译安装3.3.配置数据…

缓存雪崩,穿透,击穿

为什么要设置缓存: 有海量并发的业务场景需要,大量的请求涌入关系型数据库,基于磁盘的IO读取效率低下,常用的mysql数据库不易进行扩展维护,容易造成数据库崩溃,从而相关业务崩溃,系统崩溃。 因此…

【AI视野·今日NLP 自然语言处理论文速览 第八十二期】Tue, 5 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 5 Mar 2024 (showing first 100 of 175 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Key-Point-Driven Data Synthesis with its Enhancement on Mathematica…

【项目笔记】java微服务:黑马头条(day01)

文章目录 环境搭建、SpringCloud微服务(注册发现、服务调用、网关)1)课程对比2)项目概述2.1)能让你收获什么2.2)项目课程大纲2.3)项目概述2.4)项目术语2.5)业务说明 3)技术栈4)nacos环境搭建4.1)虚拟机镜像准备4.2)nacos安装 5)初始工程搭建5.1)环境准备5.2)主体结构 6)登录6.1…

狂雨CMS-采集规则(novelfull.com)

1. 填写采集规则的基本信息 首先点击采集管理中的添加按钮来新建规则: 然后进入到信息页面填写,包括: 规则名称:一般以要采集的源站名命名。 网站编码:默认自动检测即可。 类型:根据网站类型来选择&#x…

设计模式学习系列 -- 随记

文章目录 前言 一、设计模式是什么? 二、设计模式的历史 三、为什么以及如何学习设计模式? 四、关于模式的争议 一种针对不完善编程语言的蹩脚解决方案 低效的解决方案 不当使用 五、设计模式分类 总结 前言 最近可能工作生活上的稳定慢慢感觉自己丢失…

Smart PLC模拟量采集和低通滤波器组合应用

SMART PLC模拟量采集功能块"S_ITR"算法公式和详细代码请参考下面文章: 1、模拟量采集功能块"S_ITR" https://rxxw-control.blog.csdn.net/article/details/121347697https://rxxw-control.blog.csdn.net/article/details/1213476972、线性转换…

Java反射、枚举类和lambda表达式

前言: 本章我们就来了解Java中的反射和枚举类。枚举类和反射其实有些关系,接下来我们就来学习他们的使用。 反射: 反射的作用: 反射:反射允许对成员变量,成员方法和构造方法的信息进行编程访问。 Java中有…

全栈的自我修养 ———— vue中子组件使用父组件的方法

子组件取得父组件的方法 一、通过props(比较推荐)二、通过$emit (小编很推荐)3、provide/inject (不建议)4、 $parent (不建议) 一、通过props(比较推荐) 在父组件页面给子组件绑定方法,左边是子组件接收的方法名,内容…