第二课 Vue+Django rest framework生鲜项目资源导入项目设计

第二课 Vue+Django rest framework生鲜项目资源导入项目设计

第一节 项目基本配置

1.1 Django rest framework配置

  1. 官网:https://www.django-rest-framework.org/
  2. Django rest framework基于django的REST API的接口开发的框架。
pip install djangorestframework -i https://pypi.douban.com/simple 
pip install markdown -i https://pypi.douban.com/simple 
pip install django-filter -i https://pypi.douban.com/simple 

1.2 数据库配置

  1. MxShop\settings.py中配置DATABASE.
DATABASES = {
   
    'default': {
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "mxshop",
        'USER': 'root',
        'PASSWORD': "123456",
        'HOST': "127.0.0.1",
        'OPTIONS': {
   'init_command': 'SET default_storage_engine=INNODB;'}  # 这里如果报错storage_engine就改成 default_storage_engine
    }
}
  1. 新建数据库mxshop, 选择utf8 --UTF-8 Unicode和utf8_general_ci。
  2. 直接运行项目,发现报错需要配置Mysql的驱动。这里安装mysqlclient, 它其实用来替代我们的mysql-python的。
# 如果windows下安装出错 到这个网址下载:www.lfd.uci.edu/~gohlke/pythonlibs/
pip install mysqlclient -i https://pypi.douban.com/simple 
  1. 运行发现成功。

1.3 项目结构调整

  1. 新建python包apps,用来保存我们所有的app。把users直接拖过去
  2. 在创建extra_apps, 用来存放第三方包。我们想修改它的源码,这样就不会放入External Libraries中,可以直接修改源码。
  3. 创建db_tools包,用来存放我们的初始化数据库脚本等脚本文件。
  4. 创建media文件夹,存放文件图片。templates已经有了。
  5. 把apps和extra_apps文件夹Mark Directory as, soure root。会给我们导入带来方便。
  6. 在settings.py中配置,把apps和extra_apps加入到根搜索路径之下。防止在cmd下运行出错
import sys
# print(BASE_DIR)
sys.path.insert(0, BASE_DIR)
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
# print(sys.path)

在这里插入图片描述

1.4 前端项目导入

  1. 下载前端项目进入到online-store文件夹下。
# 安装依赖包
cnpm install
# 启动前端vue项目
cnpm run dev
# 网址输入 可以访问
http://localhost:8080/

第二节 Model模型设计

2.1 根据业务设计app

  1. 创建下面三个应用,拖入到apps中
python manage.py startapp goods
python manage.py startapp trade
python manage.py startapp user_operation
  1. null: 指定数据库存储空值的方式,是数据库范畴。默认值是 False.
    • 如果为True,Django 将会把数据库中空值保存为NULL
    • 如果为False,字符串字段存储为空字符,整数存储为0,布尔存储为False,时间存储为zero
  2. blank:指定输入字段是否为空.
    • 如果为True,该字段允许为空值,默认为False。要注意,这与null不同。null纯粹是数据库范畴,指数据库中字段内容是否允许为空,而 blank是表单数据输入验证范畴的。
    • 如果一个字段的blank=True,表单的验证将允许输入一个空值
    • 如果字段的blank=False,该字段就是必填的
  3. choise:由二项元组构成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,而且这个选择框的选项就是choices 中的选项。
  4. verbose_name:字段的自述名
    • 如果没有给定自述名,Django 将根据字段的属性名称自动创建自述名 —— 将属性名称的下划线替换成空格。
    • 在xadmin中字段的名称默认的名称

2.2 user的Model设计

  1. 设计用户模型apps\users\models.py
  2. AbstractUser和AbstractBaseUser区别: https://www.cnblogs.com/dongxixi/p/11047087.html
    • AbstractUser 类是高度集成的,里面给你定义了一堆的字段
from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.


class UserProfile(AbstractUser):
    """
    用户表
    """
    name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
    birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
    gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female",
                              verbose_name="性别")
    mobile = models.CharField(null=True, blank=True, max_length=11, verbose_name="电话")
    email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="邮箱")

    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, verbose_name="验证码")
    mobile = models.CharField(max_length=11, verbose_name="电话")
    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")

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

    def __str__(self):
        return self.code
  1. 注册到MxShop\settings.py中
AUTH_USER_MODEL = "users.UserProfile"

2.3 goods的Model设计

  1. 商品的分类的从属关系,一般通过外键的方式设计这种从属关系。
    • 因为我们把第一类和其他类级别的分类都放在一个表GoodsCategory中,比如第二类一定会有一个父类。
    • 我们如何让外键指向自己, 这里是个知识点。用“self"
  2. 下载的源码中的UEditorField支持python3, github上UEditorField可能不支持python3.
  3. 这里别忘了注册到APPS中,还有之前的应用。
INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.users.apps.UsersConfig',
    'DjangoUeditor',
    'users',
    'goods',
    'trade',
    'user_operation',
]
  1. 模型初步设计如下:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值