欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何使用django框架开发一个牛逼的电商项目

程序员文章站 2022-04-14 21:09:59
...

第一部分:开发流程

1. 架构设计

  • 分析可能用到的技术点
  • 前后端是否分离
  • 前端使用哪些框架
  • 后端使用哪些框架
  • 选择什么数据库
  • 如何实现缓存
  • 是否搭建分布式服务
  • 如何管理源代码

2. 数据库设计

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

3. 集成测试:在测试阶段要留意测试反馈平台的bug报告

第二部分:需求分析

在需求分析阶段,我们可以借助产品原型图来分析。分析完后,前端按照产品原型图开发前端页面,后端开发响应业务处理。

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

1. 用户部分:

注册:图片验证码,短信验证码

如何使用django框架开发一个牛逼的电商项目

登录:第三方登录(QQ登录,微信登录)

如何使用django框架开发一个牛逼的电商项目

个人信息:邮箱的填写与验证,清除历史记录

如何使用django框架开发一个牛逼的电商项目

地址管理:省市区地址加载,新增修改删除地址信息,设置默认地址

如何使用django框架开发一个牛逼的电商项目

2. 商品部分:

首页:商品的分类,广告控制

如何使用django框架开发一个牛逼的电商项目

商品列表

商品详情

商品搜索

3. 购物车部分

购物车管理:

如何使用django框架开发一个牛逼的电商项目

4. 订单部分

提交订单:
如何使用django框架开发一个牛逼的电商项目

5. 支付部分:

支付宝支付:

如何使用django框架开发一个牛逼的电商项目

第三部分:项目架构

如何使用django框架开发一个牛逼的电商项目

第四部分:git代码管理

https://gitee.com

第五部分:创建工程

1. 创建Django REST framework工程

apps 存放Django的应用
libs 存放第三方的库文件
utils 存放项目自己定义的公共函数或类等
scripts 用于存放管理脚本文件

2. 创建数据库:

create database meiduo_sh_13 charset=utf8;

第六部分:项目的配置

1. 修改settings 文件中的路径信息
    子应用放到了工程目录/mall/apps目录下的注册

INSTALLED_APPS = [
    ...
    'users.apps.UsersConfig',
]

    要告知django去apps里查找
    向Python解释器的导包路径中添加apps应用目录的路径

#让django找到 apps这个包
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))

2. INSTALLED_APPS
    在INSTALLED_APPS中添加rest_framework

INSTALLED_APPS = [
    ...
    'rest_framework',
]

3. 数据库
    配置mysql并导入即可:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'mysql',  # 数据库用户密码
        'NAME': 'meiduo_mall'  # 数据库名字
    }
}
import pymysql

pymysql.install_as_MySQLdb()

4. Redis
    django-redis
        关于django-redis 的使用,说明文档可见http://django-redis-chs.readthedocs.io/zh_CN/latest/
5. 本地化语言与时区

LANGUAGE_CODE = 'zh-Hans'


TIME_ZONE = 'Asia/Shanghai'

6. 日志
    创建在mall文件夹下创建logs包,用户存在日志文件
7. 异常处理
    添加配置文件时注意路径:

REST_FRAMEWORK = {
    # 异常处理
    'EXCEPTION_HANDLER': 'utils.exceptions.exception_handler',
}