Django +vue 项目
1.新建Django项目
在PyCharm中新建Django,项目名称:MxShop,APP :users,取消勾选Django admin

PyCharm新建项目
2.安装Django的相关插件
- djangorestframework
- markdown
- django-filter
- pymysql
- pillow

image.png
3.设置链接mysql 数据库。
3.1新建一个项目数据库mxshop在mysql,注意使用utf-8编码格式

image.png
3.2 设置mysql数据库驱动,打开项目的 _init.py
import pymysql
#设置mysql数据库驱动
pymysql.install_as_MySQLdb()

设置链接mysql数据库驱动
3.Django Setting中设置Mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "mxshop",
'USER': 'root',
'PASSWORD': "654321",
'HOST': "127.0.0.1",
'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}
}
}

数据库设置
4.同步数据库 - Run manage.py Task

image.png
makemigrations
migrate
4.1 makemigrations

makemigrations
4.2 migrate

成功执行
4.3查看数据库表

image.png
5. Rest API
每一个url就是一个资源
6. 使用ViewSet 视图创建API
7.整理项目目录结构
7.1 新建一个python pages -apps

image.png
7.2 将user 拖入apps

image.png
7.3 第三包 -extra_apps

7.4 文件夹 media 多媒体

7.5 文件夹 db_tools 数据库连接工具

image.png
7.6 把apps 、extra_apps Mark成Source Root

image.png
7.7 把apps,extra_apps目录加入到根目录中

image.png
import sys
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'))
8.新建model
1.根据电商项目的需求分析,需要四个app对应用户、商品、交易、操作:users、goods、trade、user_operation
打开Terminal终端,执行新建app命令:
python manage.py startapp trade
python manage.py startapp goods
python manage.py startapp user_operation

image.png
在user的model建立字段模型

image.png
from django.db import models
from django.contrib.auth.models import AbstractUser
from datetime import datetime
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","男"),("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
AUTH_USER_MODEL = "users.UserProfile"

setting
设置自定义的user,不然makemigrations时会报错。
9.添加DjangoUeditor 第三类库

image.png10.编写Good model

image.png
from django.db import models
from datetime import datetime
from DjangoUeditor.models import UEditorField
# Create your models here.
class GoodCategory(models.Model):
"""
商品类别
"""
CATEGORY_TYPE = (
(1, "一级类目"),
(2, "二级类目"),
(3, "三级类目"),
)
name = models.CharField(default="", max_length=30, verbose_name="类别名", help_text="类别名")
code = models.CharField(default="", max_length=30, verbose_name="类别code", help_text="类别code")
desc = models.TextField(default="", verbose_name="类别描述", help_text="类别描述")
category_type = models.IntegerField(choices=CATEGORY_TYPE, verbose_name="类目级别", help_text="类目级别")
parent_category = models.ForeignKey("self", null=True, blank=True, verbose_name="父类目级别", help_text="父目录",
related_name="sub_cat")
is_tab = models.BooleanField(default=False, verbose_name="是否导航", help_text="是否导航")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "商品类别"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class GoodsCategoryBrand(models.Model):
"""
品牌名
"""
category = models.ForeignKey(GoodsCategory, related_name='brands', null=True, blank=True, verbose_name="商品类目")
name = models.CharField(default="", max_length=30, verbose_name="品牌名", help_text="品牌名")
desc = models.TextField(default="", max_length=200, verbose_name="品牌描述", help_text="品牌描述")
image = models.ImageField(max_length=200, upload_to="brands/")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "品牌"
verbose_name_plural = verbose_name
db_table = "goods_goodsbrand"
def __str__(self):
return self.name
class Goods(models.Model):
"""
商品
"""
category = models.ForeignKey