由于项目目录重构的原因,manage.py不在BASE_DIR路径下,导致无法再用Tools功能里的'Run manage.py Task'来创建app,所以使用命令行创建
注意: app的创建是基于manage.py实现的,所以要找到manage.py所在的文件夹然后执行python manage.py starapp命令
这里用一个user应用作为案例
创建User应用
前提:在 luffy 虚拟环境下
1.终端从项目根目录进入apps目录
>: cd luffyapi & cd apps
2.在apps文件夹下创建app
>: python ../../manage.py startapp user
创建User表
- 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
注册user模块,配置User表
- dev.py
INSTALLED_APPS = [
# ...
'user',
]
注意: 自定义User表 因为User表是基于 auth_user 表创建
AUTH_USER_MODEL = 'user.User'
配置media
注意: media文件夹要创建在BASE_DIR下
- dev.py
MEDIA_URL = '/media/' # 用于指定url路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 用于指定上传文件的存储路径
media目录配置
├── luffyapi
└── luffyapi/
└── media/
└── icon
└── default.png
URL配置
- luffyapi/urls.py 总路由
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
# 路由分发
path('user/', include('user.urls')),
# media文件夹
re_path('media/(?P<path>.*)',serve, {'document_root':settings.MEDIA_ROOT})
]
- luffyapi/apps/user/urls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
...
]
数据库迁移
数据迁移是基于manage.py执行命令,所以要找到manage.py
python manage.py makemigrations
python manage.py migrate
注意: 迁移时会报Pillow模块的错误
安装pillow模块
>: pip install Pillow
创建admin
python manage.py createsuperuser
- apps/user/admin/py
from django.contrib import admin
from . import models
# Register your models here.
admin.site.register(models.User)