第二步创建项目,创建mysql数据库
程序员文章站
2022-05-24 18:09:33
...
1.新建虚拟环境mkvirtualenv 环境名称
然后创建模版
2.新建一个apps文件夹 把创建的放到里面去,添加注册配置,
3.新建模板类,并支持模板路径
4、连接数据库
5、新建静态文件,并说明路径
7、创建模板类
(1)、user模板类代码
下面展示一些 内联代码片
。
# -*-coding:utf-8-*-
from django.db import models
from django.contrib.auth.models import AbstractUser
from apps.base_model import BaseModel
class User(AbstractUser, BaseModel):
"""用户模型类"""
class Meta:
db_table = 'df_user'
verbose_name = '用户'
verbose_name_plural = verbose_name
class AddressManager(models.Manager):
"""地址模型管理器类"""
# 1. 改变原有查询的结果集:all()
# 2. 封装方法:用户操作模型类对应的数据表(增删查改)
def get_default_address(self, user):
# 获取用户的默认收货地址
try:
address = self.get(user=user, is_default=True)
except self.model.DoesNotExist:
address = None # 不存在默认地址
return address
class Address(BaseModel):
"""地址模型类"""
user = models.ForeignKey('User', on_delete=models.CASCADE, verbose_name='所属用户')
receiver = models.CharField(max_length=20, verbose_name='收件人')
addr = models.CharField(max_length=256, verbose_name='收件地址')
zip_code = models.CharField(max_length=6, null=True, verbose_name='邮政编码')
phone = models.CharField(max_length=11, verbose_name='联系电话')
is_default = models.BooleanField(default=False, verbose_name='是否默认')
# 自定义一个模型管理器类
objects = AddressManager()
class Meta:
db_table = 'df_address'
verbose_name = '地址'
verbose_name_plural = verbose_name
def __str__(self):
return self.user.username
用户认证系统通过
(2)、goods模板类
# -*-coding:utf-8-*-
from django.db import models
from apps.base_model import BaseModel
from tinymce.models import HTMLField
class GoodsType(BaseModel):
"""商品类型模型类"""
name = models.CharField(max_length=20, verbose_name='种类名称')
logo = models.CharField(max_length=20, verbose_name='标识')
image = models.ImageField(upload_to='type', verbose_name='商品类型图片')
class Meta:
db_table = 'df_goods_type'
verbose_name = '商品种类'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class GoodsSKU(BaseModel):
"""商品SKU模型类"""
status_choices = (
(0, '下线'),
(1, '上线')
)
type = models.ForeignKey('GoodsType', on_delete=models.CASCADE, verbose_name='商品种类')
goods = models.ForeignKey('Goods', on_delete=models.CASCADE, verbose_name='商品SPU')
name = models.CharField(max_length=20, verbose_name='商品名称')
desc = models.CharField(max_length=256, verbose_name='商品简介')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='价格')
unite = models.CharField(max_length=20, verbose_name='商品单位')
image = models.ImageField(upload_to='goods', verbose_name='商品图片')
stock = models.IntegerField(default=1, verbose_name='商品库存')
sales = models.IntegerField(default=0, verbose_name='商品销量')
status = models.SmallIntegerField(default=1, choices=status_choices, verbose_name='状态')
class Meta:
db_table = 'df_goods_sku'
verbose_name = '商品'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# def __repr__(self):
# return self.name
class Goods(BaseModel):
"""商品SPU模型类"""
name = models.CharField(max_length=20, verbose_name='商品SPU名称')
# 富文本类型:带有格式的文本
detail = HTMLField(blank=True, verbose_name='商品详情')
class Meta:
db_table = 'df_goods'
verbose_name = '商品SPU'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class GoodsImage(BaseModel):
"""商品图片模型类"""
sku = models.ForeignKey('GoodsSKU', on_delete=models.CASCADE, verbose_name='商品')
image = models.ImageField(upload_to='goods', verbose_name='图片路径')
class Meta:
db_table = 'df_goods_image'
verbose_name = '商品图片'
verbose_name_plural = verbose_name
class IndexGoodsBanner(BaseModel):
"""首页轮播商品展示模型类"""
sku = models.ForeignKey('GoodsSKU', on_delete=models.CASCADE, verbose_name='商品')
image = models.ImageField(upload_to='banner', verbose_name='图片')
index = models.SmallIntegerField(default=0, verbose_name='展示顺序')
class Meta:
db_table = 'df_index_banner'
verbose_name = '首页轮播商品'
verbose_name_plural = verbose_name
def __str__(self):
return self.sku.name
class IndexTypeGoodsBanner(BaseModel):
"""首页分类商品展示模型类"""
DISPLAY_TYPE_CHOICES = (
(0, '标题'),
(1, '图片')
)
type = models.ForeignKey('GoodsType', on_delete=models.CASCADE, verbose_name='商品类型')
sku = models.ForeignKey('GoodsSKU', on_delete=models.CASCADE, verbose_name='商品SKU')
display_type = models.SmallIntegerField(default=1, choices=DISPLAY_TYPE_CHOICES, verbose_name='展示类型')
index = models.SmallIntegerField(default=1, verbose_name='展示顺序')
class Meta:
db_table = 'df_index_type_goods'
verbose_name = '主页分类展示商品'
verbose_name_plural = verbose_name
def __str__(self):
return self.sku.name
class IndexPromotionBanner(BaseModel):
"""首页促销活动模型类"""
name = models.CharField(max_length=20, verbose_name='活动名称')
url = models.CharField(max_length=256, verbose_name='活动链接')
image = models.ImageField(upload_to='banner', verbose_name='活动图片')
index = models.SmallIntegerField(default=0, verbose_name='展示顺序')
class Meta:
db_table = 'df_index_promotion'
verbose_name = '主页促销活动'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
添加富文本编辑器
(3)、order模型类
# -*-coding:utf-8-*-
from django.db import models
from apps.base_model import BaseModel
class OrderInfo(BaseModel):
"""订单模型类"""
PAY_METHODS = {
'1': "货到付款",
'2': "微信支付",
'3': "支付宝",
'4': '银联支付'
}
PAY_METHODS_ENUM = {
"CASH": 1,
"ALIPAY": 2
}
ORDER_STATUS = {
1: '待支付',
2: '待发货',
3: '待收货',
4: '待评价',
5: '已完成'
}
PAY_METHOD_CHOICES = (
(1, '货到付款'),
(2, '微信支付'),
(3, '支付宝'),
(4, '银联支付')
)
ORDER_STATUS_CHOICES = (
(1, '待支付'),
(2, '待发货'),
(3, '待收货'),
(4, '待评价'),
(5, '已完成')
)
order_id = models.CharField(max_length=128, primary_key=True,verbose_name='订单id')
user = models.ForeignKey('user.User', on_delete=models.CASCADE, verbose_name='用户')
addr = models.ForeignKey('user.Address', on_delete=models.CASCADE, verbose_name='地址')
pay_method = models.SmallIntegerField(choices=PAY_METHOD_CHOICES, default=3, verbose_name='支付方式')
total_count = models.IntegerField(default=1, verbose_name='商品数量')
total_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='总金额')
transit_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='运费')
order_status = models.SmallIntegerField(choices=ORDER_STATUS_CHOICES, default=1, verbose_name='订单状态')
trade_no = models.CharField(max_length=128, default='', verbose_name='支付编号')
class Meta:
db_table = 'df_order_info'
verbose_name = '订单'
verbose_name_plural = verbose_name
class OrderGoods(BaseModel):
"""订单商品模型类"""
order = models.ForeignKey('OrderInfo', on_delete=models.CASCADE, verbose_name='订单')
sku = models.ForeignKey('goods.GoodsSKU', on_delete=models.CASCADE, verbose_name='商品SKU')
count = models.IntegerField(default=1, verbose_name='商品数目')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='价格') # 总价格
comment = models.CharField(max_length=256, default='', verbose_name='评论')
class Meta:
db_table = 'df_order_goods'
verbose_name = '订单商品'
verbose_name_plural = verbose_name
(4)、cart模型类
from django.db import models
# Create your models here.
上一篇: WEB入门总结(二)Maven篇
下一篇: web项目报404一直找不到图片
推荐阅读
-
MySQL创建新用户代码实例
-
创建基于ASP.NET core 3.1 的RazorPagesMovie项目(一)-创建和使用默认的模板
-
创建基于ASP.NET core 3.1 的RazorPagesMovie项目(三)-已搭建基架的Razor页面解释和更新
-
eclipse创建springboot项目
-
创建简单spring boot项目
-
链接 Mysql 创建 数据库和创表,增加数据
-
通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
-
vue-cli创建的项目,配置多页面的实现方法
-
C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)
-
Java--IDEA创建多服务模块的SpringCloud微服务项目