Django创建子应用和模型
构建目录结构
一个项目往往有许多子模块、媒体文件、静态资源文件等,为了管理好项目,在构建项目的时候需要创建不同文件目录方便编码和管理。
- myapps:统一子应用管理文件
- static:统一静态资源管理文件
- metia:统一媒体文件
- extra_apps:统一第三方应用文件
- 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包路径。
Original: https://blog.csdn.net/sandmswift/article/details/124112886
Author: 日出青山在
Title: Django创建子应用和模型-Day2
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/736481/
转载文章受原作者版权保护。转载请注明原作者出处!