django项目学习二

django 天天生鲜项目学习二

该项目的需求,功能分析视频教程都有请看视频,接下来我主要介绍我敲代码中的不同之处,以及该项目所有的技术有哪些。我本是一个前端开发,有关python的博客都是初学过程的记录。

数据库 mysql
  • 安装mysql 依赖包
	pip install pymysql
  • dailyfresh -> settings.py 配置:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dailyfresh', # 数据库名称
        'USER': 'root',  # 账号
        'PASSWORD': 'root', # 密码
        'HOST': 'localhost', # ip
        'PORT': 3306, # 端口号
        'OPTIONS': {
            "init_command": "SET foreign_key_checks = 0;", # 取消外键检查
        }
    }
}
  • dailyfresh -> init.py 配置:
import pymysql
pymysql.install_as_MySQLdb()
模型类

由于我的django2.0以上版本与视频1.8版本不同,模型类里面外键里面多一个on_delete属性

user -> models.py

本项目采用django的认证系统,User继承了django.contrib.auth.models.AbstractUser类

from django.db import models
from django.contrib.auth.models import AbstractUser
from db.base_model import BaseModel
# Create your models here.user_permissions
class User(AbstractUser, BaseModel):
    '''用户模型类'''

    class Meta:
        db_table = 'df_user'
        verbose_name = '用户'
        verbose_name_plural = verbose_name

class AddressManager(models.Manager):
    '''地址模型管理器类'''
    def get_default_address(self, user):
        try:
            address = self.get(user=user, is_delete=False, is_default=True)
        except self.model.DoesNotExist:
            address = None
        return address

class Address(BaseModel):
    '''地址模型类'''
    user = models.ForeignKey('User', verbose_name='所属账户', on_delete=models.CASCADE)
    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

为了让我们创建的User类内能替换django默认的类需要在settings.py配置添加如下配置:

# django认证系统使用的模型类
AUTH_USER_MODEL='user.User'

django模型类 更多的属性和方法,请参加django的官方文档:
https://docs.djangoproject.com/zh-hans/2.2/

迁移

迁移由两步完成:

  1. 生成迁移文件:根据模型类生成创建表的迁移文件。
  2. 执行迁移:根据第一步生成的迁移文件在数据库中创建表。

生成迁移文件命令如下:

python manage.py makemigrations

执行迁移命令如下:

python manage.py migrate

补充说明:

  1. goods模型类里面 的 HTMLField字段类型,需要安装 django-tinymce
  2. goods模型类里面 的 ImageField字段类型,需要安装Pillow
  3. 这个项目order模块里面的模型类含有 user和goods模块里面的模型类的外键,最 好是先迁移 user和goods模块里的模型类,之后再把order模型类拷入,再开始执行迁移命令。否则会报错,造成数据库里缺表。
tinymce 富文本编辑器

商品SPU类的HTMLField类型是采用的tinymce的字段类型,需要使用 tinymice

from tinymce.models import HTMLField
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

安装 tinymce

pip install django-tinymce

配置

  • settings.py配置
	INSTALLED_APPS = (
    	....
    	'tinymce'
)

	TINYMCE_DEFAULT_CONFIG = {
    'theme': 'advanced',
    'width': 600,
    'height': 400,
}
  • 在dailyfresh目录下urls.py 配置:
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('tinymce/', include('tinymce.urls')),  # 富文本编辑器
    path('user/', include(('user.urls', 'user'), namespace='user')),  # 用户模块
    path('cart/', include(('cart.urls', 'cart'), namespace='cart')),  # 购物车模块
    path('order/', include(('order.urls', 'order'), namespace='order')),  # 订单模块
    path('', include(('goods.urls', 'goods'), namespace='goods')),  # 商品模块

]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值