Django项目实践(商城):一、项目准备

在这里插入图片描述

(根据居然老师直播课内容整理)

一、项目简介

  • 本次项目实践,完成一下电商商城开发,开发一个类似淘宝类似的简化的商城

1、项目开发流程介绍

在这里插入图片描述

1.1 架构设计

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

1.2 数据库设计

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

1.3 集成测试

  • 在测试阶段要留意测试反馈平台的bug报告

2、项目需求分析

2.1 需求分析原因:

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

2.2 需求分析方式:

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

2.3需求分析内容:

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

2.4 主要步骤

2.4.1 项目主要页面介绍(略)

2.4.2 项目主要模块归纳

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

3、项目架构设计

3.1 项目开发模式

  • 本项目开发模式如下:
选项 技术选型
开发模式 前后端不分离
后端框架 Django
前端框架 Vue.js
  • 说明
    • 前后端不分离的开发模式,是为了提高搜索引擎排名,即SEO。特别是首页,详情页和列表页。
    • 页面需要局部刷新:我们会选择使用Vue.js来实现。

3.2 项目运行机制

在这里插入图片描述

二、工程创建与配置

1、准备工作

1.1 创建商城虚拟环境

  • 为项目创建目录并进入,执行 pipenv shell
pipenv shell

1.2 安装Django框架及相关包

# 安装django环境
pip install django==2.2
# 安装mysql驱动
pip install mysqlclient 
# 安装redis驱动
pip install django-redis

1.3 创建美多商城Django工程

django-admin startproject lgshop
  • 如果现在运行,出现以下提示
    在这里插入图片描述
    将 run/debug configurations的script paramenters 参数改为 runserver
    在这里插入图片描述

1.4 其它准备

  • mysql数据库准备: mysql 5.7
  • redis数据库准备: redis 2.1

2、配置开发环境

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

2.1 指定开发环境配置文件

  • django创建项目时,自动在manager.py的main()函数指定了配置文件,将此处修改成自己指定的配置文件
    在这里插入图片描述
def main():
    """Run administrative tasks."""
    # django默认的配置文件
    # os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lgshop.settings')
    # 开发环境的配置文件
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lgshop.dev')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

  • 注:wsgi.py 项目正式上线时才会使用,开发时可以忽略,但也不要删除

2.2 配置MySQL数据库

  • 修改配置文件:本项目开发环境配置文件是dev.py
    在这里插入图片描述
DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        # mysql 版本 5.7
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lg_shop',  # 数据库名字
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'root',  # 数据库密码
        'HOST': '127.0.0.1',  # 数据库地址   
        'PORT': 3306  # 数据库端口号
    }
}
  • 需要创建mysql数据库root/root@lg_shop
    在这里插入图片描述

2.3 配置redis数据库

  • 默认的redis可以设定0号数据库(可以改)
  • session可以保存发1号数据库
  • 其它数据如果保存到其它库中。
  • 每增加一个,可以重命名一个,并修改相关参数
    在这里插入图片描述
# Redis缓存 0-15  16
CACHES = {
    
    
    "default": {
    
    
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        "OPTIONS": {
    
    
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": {
    
    
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
    
    
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

2.4 配置工程日志

  • 配置工程日志目的:使用日志文件记录网站输出信息
    在这里插入图片描述
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(BASE_DIR, 'logs/lgshop.log'),  # 日志文件的位置
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {  # 日志器
        'django': {  # 定义了一个名为django的日志器
            'handlers': ['console', 'file'],  # 可以同时向终端与文件中输出日志
            'propagate': True,  # 是否继续传递日志信息
            'level': 'INFO',  # 日志器接收的最低日志级别
        },
    }
}
  • 在根目录上创建 logs目录

2.4 配置前端静态文件

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

2.4.1 准备静态文件

在项目目录下新建一个static目录

2.4.2 指定静态文件加载路径

在这里插入图片描述

# ./lgshop/dev.py 
# 指定加载静态文件的路径前缀
STATIC_URL = '/static/'

# 静态文件加载路径
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

2.5 配置模板文件

2.5.1 准备模板文件

在项目目录下新建一个templates目录

2.5.2 指定模板文件加载路径

在这里插入图片描述

# ./lgshop/dev.py 
TEMPLATES = [
    {
    
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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、设置导包路径

  • 为了方便管理所有应用, 创建apps目录,存放所有应用

3.1 创建用户模块子应用

-例创建users应用
在这里插入图片描述

python ..\manage.py startapp users 

3.2 定义users的一个view方法

在这里插入图片描述

# ./apps/user/views.py
from django.shortcuts import render
from django.views import View

class RegisterView(View):
    def get(self, request):
        """提供用户注册页面"""
        return render(request, 'register.html')
  • 注:在./templates/目录下创建register.html

3.3 注册app应用

  • 有两种方法:直接注册;设置导包路径注册

3.3.1 直接注册

在这里插入图片描述

3.3.2 设置导包路径注册

在这里插入图片描述

  • 注:查看导包路径: print(sys.path)

3.4 注册应用路由

  • 先注册应用内的路由或先注册总路由都可以

3.2.1 注册应用内部的路由

在这里插入图片描述

# ./apps/users/urls.py 
from django.urls import path
from . import views

app_name = 'users'

urlpatterns = [
    # 注册
    path('register/', views.RegisterView.as_view(), name='register'),
]

3.2.2 注册总路由

在这里插入图片描述

# ./lgshop/urls.py
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/', include('apps.users.urls')),
]

4、相关目录和文件

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/laoluobo76/article/details/112935168
今日推荐