创建user应用与User表

使用auth表扩写的前提条件

  • 你决定使用auth表扩写,项目一定不要先迁移,先建好用户表再迁移
  • 如果已经迁移完了,再想用auth的user表

    -删库,删迁移文件所有app
    -删admin和auth的迁移文件(如下图)之后再重新迁移

 

创建应用user

前提:在 luffy 虚拟环境

# 1.终端从项目根目录进入apps目录
cd luffyapi & cd apps

# 2.创建app
python ../../manage.py startapp user

创建User表对应的model

# user/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    mobile = models.CharField(max_length=11, unique=True)
    # 需要pillow包的支持
    icon = models.ImageField(upload_to='icon', default='icon/default.png')

    class Meta:
        db_table = 'luffy_user'
        verbose_name = '用户表'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username
  • 下载pillow模块
pip install pillow

注册应用配置User表

注册应用

# dev.py文件

INSTALLED_APPS = [
    ...
    'rest_framework',
    'user',
]

配置User表

# 指定自定义的表 : [应用名.表名]
AUTH_USER_MODEL = 'user.User'

配置media

media路径配置

# 在dev.py文件

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

media目录(提示:不用配置,上传文件时会自动生成)

├── luffyapi
    └──    luffyapi/
           └──    media/      
            └──    icon 
                └── default.png

路由配置

主路由配置(路由分发)

# luffyapi/urls.py:

from django.contrib import admin
from django.urls import path, include
from django.views.static import serve
from django.conf import settings
urlpatterns = [
    path('admin/', admin.site.urls),

    path('user/', include('user.urls')),

    path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT})
]

进行数据库迁移

  • cd 到项目根路径下, 因为 manage.py 在项目根路径下
python manage.py makemigrations
python manage.py migrate

表迁移报错问题解决

# 遇到的问题:No module named 'utils'

分析:utils是小luffyapi下的一个包,之前有导入到其他文件下使用,现在报错说没有utils模块,考虑到是不是它所在的目录加入环境变量出了问题

  • 查看发现小luffyapi已经加入到环境变量,程序运行没问题,但是表迁移,就报错

  • 打印看了一下,确实环境变量有,但是不是个字符串,是个对象
  • 程序运行,是没问题

  • 迁移有问题:配置文件中转成字符串,就解决了

 

 

posted @ 2023-02-28 08:30  莫~慌  阅读(64)  评论(0编辑  收藏  举报