Django创建子应用和模型-Day2

Django创建子应用和模型

构建目录结构

一个项目往往有许多子模块、媒体文件、静态资源文件等,为了管理好项目,在构建项目的时候需要创建不同文件目录方便编码和管理。

  1. myapps:统一子应用管理文件
  2. static:统一静态资源管理文件
  3. metia:统一媒体文件
  4. extra_apps:统一第三方应用文件
  5. utils:统一工具类文件

文件目录

添加导包路径

在setting.py文件需要配置应用管理文件的路径,以此定位子应用的路径

sys.path.insert(0, os.path.join(BASE_DIR, 'myPro', 'myapps'))

其中BASE_DIR是setting.py文件的路径,使用join语句把括号里面的参数进行拼接,拼接成自己的应用文件路径即可。建议打印拼接的路径是否与实际路径相符,不然容易混淆。

创建和注册子应用

1.创建子应用

打开终端,进入myapps文件路径,通过程序入口文件manage.py创建应用,文件路径要找对,执行以下命令创建子应用:

 python ../../manage.py startapp demo5

运行成功后没有消息返回,应用文件里面已经创建了新的子应用,我这里创建了很多测试用例
创建文件

2. 注册

回到setting.py设置文件给子应用注册,找到INSTALLED_APPS,添加刚刚创建的应用名字
注册

创建应用模型

安装pymysql模块

进入项目的虚拟环境执行安装pip install Pymysql

引入pymysql模块

引入

写user用户模型

为user子应用添加用户模型并继承系统的user类,代码如下

from django.contrib.auth.models import AbstractUser
from django.db import models
class Users(AbstractUser):
    nickName = models.CharField(verbose_name='昵称', max_length=10)
    name = models.CharField(verbose_name='姓名', max_length=10)
    password = models.CharField(max_length=16, verbose_name='密码')
    phone = models.CharField(max_length=11, unique=True, verbose_name='电话号码')
    GENDER = (
        ('male', '男'),
        ('female', '女')
    )
    sex = models.CharField(choices=GENDER, verbose_name='性别',max_length=10)
    birthday = models.DateField(verbose_name="生日", null=True, blank=True)
    address = models.CharField(verbose_name="地址",max_length=20)
    image = models.ImageField(verbose_name='头像', upload_to='media/%Y/%m', default='defalut.jpg')  # /%Y/%m日期年月

    class Metas:
        verbose_name = "用户信息"
        verbose_name_plural = verbose_name

    def Meta(self):
        if self.nickName:
            return self.nickName
        else:
            self.nickName

修改setting.py,由于模型继承系统类,并且用到文件存储,还需要进行相应修改
1.修改系统用户模型为自定义模型
2.定义媒体文件路径

AUTH_USER_MODEL = "users.Users"#定义用户数据,子应用名.类名
MEDIA_URL = '/media/'  #存储媒体文件相对路径
MEDIA_ROOT = os.path.join(BASE_DIR,'myPro/media')

#数据库配置,使用mysql,我的配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', #定义连接mysql
        'HOST': '127.0.0.1',#主机
        'PORT': 3306,#端口
        'USER': 'root',
        'PASSWORD': '123456',
        'NAME': 'django',#数据库表名
    }
}

模型迁移到数据库

1.迁移

python  ../../manage.py makemigrations

2.创建

 python  ../../manage.py migrate

创建成功在数据库可以看到具体表
表
今天刚学到这里,踩的最大坑就是最开始导应用包路径和注册的问题,最开始跟老师敲的路径对不上,后面离谱的是注册问题,一直显示myapps模块找不到,我跟着老师之前敲得是之前的配置好像myapps.users.UsersConfig,导致它一会可以创建应用但是迁移失败显示找不到myapps,后面折磨一个小时发现注册应用的名字就好了,后面想想确实如此,我最开始已经导了myapps包路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值