使用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已经加入到环境变量,程序运行没问题,但是表迁移,就报错
- 打印看了一下,确实环境变量有,但是不是个字符串,是个对象
- 程序运行,是没问题
- 迁移有问题:配置文件中转成字符串,就解决了
标签:media,py,user,创建,迁移,luffyapi,User From: https://www.cnblogs.com/chen-ao666/p/17162395.html