Web开发 ------ 基于Django+Vue网上购物商城(一):数据库模型和xadmin后台设计

基于Django+Vue网上购物商城

完整项目地址:https://gitee.com/dadadaliuliuliiu/ShopProject

一、项目介绍

1.技术难点

  • Vue + Django Rest Framework 前后端分离技术
  • xadmin后台管理系统
  • throttling 用户和IP限速
  • 文档自动化管理
  • Sentry 完成线上系统的错误日志的监控和告警
  • 第三方登录和支付宝支付的集成
  • 本地调试远程服务器代码的技巧

2.系统功能

  • 用户注册、登录、注销和第三方登录。 其中手机号码注册支持倒计时功能,服务器端手机号码发送频次限制。
  • 用户个人中心展示和更新个人信息、用户收藏、用户评论、用户收货地址和用户订单。
  • 商品管理: 商品分页展示、商品过滤/搜索/排序、商品搜索、热卖商品、商品详情、商品收藏等。
  • 商品分类管理 : 子分类、 搜索、 大类的推荐商品。
  • 留言 支付宝支付,扫码支付。跳回商户页面。
  • 购物车管理、订单管理。
    在这里插入图片描述

3.项目环境

操作系统: Windows/Linux/Mac
编程语言: Python3.x
Web框架: Django 2.2 Xadmin
前端框架: Vue Vue-router Vuex
数据库: MySQL/Mariadb/sqlite
IDE工具: Pycharm

4.后台管理页面展示

在这里插入图片描述

二、项目准备

1.创建Django工程

因为django安装比较慢
先创建一个pure python 工程 名为DjangoProject
在这个工程里 pip install dango==2.2
再在同一个目录下创建一个djang工程 名为 ShopProject

pip install -i https://pypi.douban.com/simple/ django==2.2

确保django版本为2.2

(base) F:\ziliao\python_kaifa\my_code\12_Django项目2\ShopProject>python
Python 3.7.3 

>>> import django
>>> django.get_version()
'2.2'

2.报错 及解决

1.创建django新工程报错
No such file or directory:'D:\Anaconda3\lib\venv\scripts\nt\python.exe’
原因:相应目录下没有python解释器
解决:将D:/Anaconda3下的 python.exe,python.pdb,pythonw.exe,pythonw.pdb四个文件复制到 D:\Anaconda3\lib\venv\scripts\nt\python.exe 目录中,即可

三、项目 数据库模型 和 xadmin后台 设计

0.admin和xadmin后台管理对比

Xadmin 是一款基于 Django 编写的 admin 的替代管理系统。Django 中是自带后台管理模型(admin)的, admin 的实现步骤和呈现效果在个人博客项目中介绍。
【Xadmin 的优势】:

  • 更人性化的前端页面设计,甚至实现了自定义主题
  • Xadmin 可实现更细致的后台管理,例如权限的划分、用户信息的导出机制、用户信息的自定义显示等
  • 整个实现过程是快速高效的

下面是admin和xadmin后台管理的页面对比:
admin后台管理展示
在这里插入图片描述
Xadmin后台管理
在这里插入图片描述
admin实现步骤(个人博客):
1.创建一个超户
2.创建一个blog应用,并在setting中注册
3.创建一个数据库模型来存储我们的文章数据
(数据库迁移)
4.在admin后台注册模型,并且定制admin后台

Xadmin实现步骤(电商平台):
1.创建一个超户
2.创建应用,并在setting中注册。
如果有多个子应用(例如:用户、商品、交易等),需要创建一个包来存放这些子应用,如本项目一样 app/users。如果仅有一个子应用也不需要放在同一文件夹下。将每一个子应用子setting中注册。
3.创建每个子应用的数据库模型
4.在admin后台注册模型,并且定制admin后台。
如果项目中存在多个子应用,需要将每个子应用注册到Xadmin后台,包括在其 admin.py、apps.py、init.py 文件中进行注册以及显示列的设置。但是关于xadmin的基本配置和全局配置仅需要设置一次即可。

1.创建app包以及app里面的四个应用

  • 创建项目
  • 创建子应用: 存储在app中
    users 用户认证
    goods 商品管理
    trade 交易管理
    user_operation 用户操作
(base) F:\ziliao\python_kaifa\my_code\12_Django项目2\ShopProject>cd app
(base) F:\ziliao\python_kaifa\my_code\12_Django项目2\ShopProject\app>python ../manage.py startapp users
(base) F:\ziliao\python_kaifa\my_code\12_Django项目2\ShopProject\app>python ../manage.py startapp goods
(base) F:\ziliao\python_kaifa\my_code\12_Django项目2\ShopProject\app>python ../manage.py startapp trade
(base) F:\ziliao\python_kaifa\my_code\12_Django项目2\ShopProject\app>python ../manage.py startapp user_operate

在这里插入图片描述

2.用户认证 数据库模型设计

(1)数据库模型设计代码
mobile = models.CharField("电话", max_length=11, null=True, blank=True)

null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。
blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填

# app/users/models.py

from datetime import datetime
from django.contrib.auth.models import AbstractUser
from django.db import models
# Create your models here.

class UserProfile(AbstractUser):
    """用户信息"""
    GENDER_CHOICES = (
        ("male", "男"),
        ("female", "女")
    )
    # 用户用手机注册,所以姓名,生日和邮箱可以为空
    name = models.CharField("姓名", max_length=30, null=True, blank=True)
    birthday = models.DateField("出生年月", null=True, blank=True)
    gender = models.CharField("性别", max_length=6, choices=GENDER_CHOICES,
                              default="female")
    """ 
    null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。 
    blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填 
    """
    mobile = models.CharField("电话", max_length=11, null=True, blank=True)
    email = models.EmailField("邮箱", max_length=100, null=True, blank=True)

    # 元数据操作
    class Meta:
        # 后台管理显示单数和复数的名称
        verbose_name = "用户信息"
        verbose_name_plural = verbose_name

        def __str__(self):
            return self.username

class VerifyCode(models.Model):
    """验证码"""
    code = models.CharField("验证码", max_length=10)
    mobile = models.CharField("电话", max_length=11)
    add_time = models.DateTimeField("添加时间", default=datetime.now)

    class Meta:
        verbose_name = "短信验证"
        verbose_name_plural = verbose_name

        def __str__(self):
            return self.code
(2)settings中配置,重载系统用户
# ShopProject/settings.py 

#重载系统的用户,让UserProfile生效 
AUTH_USER_MODEL = 'app.users.UserProfile'

默认系统认证是AbstractUser,帮我们添加了一些信息。 这里UserProfile继承AbstractUser,可以看看AbstractUser的源码

# Ctrl + 鼠标点击进入源码 
class AbstractUser(AbstractBaseUser, PermissionsMixin):
(3)settings中注册应用,设置中文

在这里插入图片描述
设置中文

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
(4)写入数据库

models.py文件有变动就要执行迁移数据库操作

makemigrations
migrate

3.用户认证 Xadmin后台管理

(1)xadmin和ueditor 路由配置
import xadmin
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    # path('admin/', admin.site.urls),
    # 使用xadmin进行后台管理
    path('xadmin/', xadmin.site.urls),
    # 富文本编辑时路由的配置
    path('ueditor/', include('DjangoUeditor.urls')),
]

(2)子应用Xadmin注册

四个app下面都新建文件admin.py,然后分别注册到后台。

如何配置xadmin的默认设置和通用设置?

  • BaseAdminView: 所有AdminView的基础类,注册在该View上的插件可以影响所有的AdminView.
  • CommAdminView:用户已经登录后显示的View,也是所有登陆后View的基础类。该View主要作用是创建了Xadmin的通用元素, 例如:系统菜单,用户信息等。插件可以通过注册该View来修改这些信息。
# app/users/admin.py

# 后台管理站点注册数据库模型,进行管理


import xadmin
from xadmin import views

from 
  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程是一个系列的django实战进阶开发教程,目标是带领大家快速上手实战,课程以最新版本django3.2为蓝本,深入django源码本身,通过内置的类视图来开发,即CBV模式开发,从最基础的类显示视图到类编辑视图再到混入视图,由浅入深,专注Django的高级知识,带你系统的玩转Django,无过多的依赖第三方库,进一步降低学习门槛,更加专注django框架本身!本课程将带你实现一个功能完备的商城系统,如:新闻管理、商品管理(包含多规格)、订单管理、购物车、快速下单、评论、地址、运费模板等常见的商城功能!除此之外,你还可以将本课程内容中涉及到的django类视图的高级用法作为参考资料,在以后的开发中用到的时候再翻阅。认真看完这个系列视频教程之后,您会深入理解django框架的高级知识以及开发流程,具备使用django上手开发实际项目的基本能力!本课程亮点一、少量的第三方依赖,降低学习门槛开发过程中依赖第三方库少,减少大家的进一步的学习理解成本,从而更加专注django框架本身!二、前端轻度结合vue.js,无需过多前端技能本项目将轻度结合vue.js以及fetch来完成一些异步请求,无需过多vue 知识,更贴合后端开发者,也更加靠近当下最热门的技术栈,为前后端分离项目开发打下坚实的基础!三、采用django本身序列化方法构造json,深入django框架本身深度使用Django本身的序列化器来序列化数据,构造一些异步操作的接口,通过这一深度使用对未来使用drf框架将打下坚实的基础,学习drf框架将变的非常容易。四、CBV模式开发,深入Django类视图本项目全部采用Django的类视图,深入学习类视图,不同的请求我们可以在类中使用不同的方法来处理,这样大大的提高了代码的可读性以及高度扩展性,更加便于二次开发!五、多规格产品功能,更符合实际需求网上千篇一律的教程都没有深入讲解多规格商品的实现思路,本专栏将手把手带你完成多规格功能,并且对JD及TB的两种多规格模式的利弊进行深入剖析!
手把手进行Django Vue前后端分离开发的入门,可以通过以下步骤实现: 1. 首先,确保已经安装了Python和Node.js,以及相应的开发环境。 2. 创建一个Django项目,可以使用命令`django-admin startproject project_name`来创建项目。 3. 进入项目目录,创建一个Django应用,可以使用命令`python manage.py startapp app_name`来创建应用。 4. 在Django中配置应用,包括数据库连接、URL路由等,可在`settings.py`中进行配置。 5. 创建数据库模型,可以在应用目录下的`models.py`中定义模型类,表示数据表结构。 6. 执行迁移命令,将模型映射到数据库中,可使用命令`python manage.py makemigrations`和`python manage.py migrate`执行。 7. 在应用目录下创建视图函数,用于处理客户端的请求,其中可以包括接收和发送JSON数据。 8. 在`urls.py`中配置URL路由,将请求的URL与对应的视图函数进行关联。 9. 使用Vue CLI创建Vue项目,可以使用命令`vue create frontend`来创建项目。 10. 在Vue项目中安装axios,用于发送HTTP请求,可以使用命令`npm install axios`进行安装。 11. 按照需求,在Vue组件中编写前端代码,可以使用axios与后端进行数据交互,获取数据并展示。 12. 运行Django项目,可以使用命令`python manage.py runserver`来启动Django服务器。 13. 运行Vue项目,可以使用命令`npm run serve`来启动Vue开发服务器。 通过以上步骤,即可实现Django Vue前后端分离开发入门。在实践中,可以进一步学习和了解DjangoVue的相关文档和教程,通过不断实践和探索,提升开发技能。相关的示例代码和项目实例可以参考知乎上的文章。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值