refactor: 重构配置文件

所有项目的app都放在env.py里的CUSTOM_APPS列表里注册,为了支持按照项目app查找model
This commit is contained in:
ahhui
2023-08-03 18:04:34 +08:00
committed by 李强
parent d59df6db7c
commit 7c27f95353
4 changed files with 33 additions and 6 deletions

2
backend/.gitignore vendored
View File

@@ -91,7 +91,7 @@ ENV/
**/migrations/*.py
!**/migrations/__init__.py
*.pyc
conf/
conf/*
!conf/env.example.py
db.sqlite3
media/

View File

@@ -55,10 +55,10 @@ INSTALLED_APPS = [
"rest_framework",
"django_filters",
"corsheaders", # 注册跨域app
"dvadmin.system",
"drf_yasg",
"captcha",
'channels',
*locals().get("CUSTOM_APPS", []), # 所有项目里写的app需要在env.py文件里的CUSTOM_APPS中
]
MIDDLEWARE = [
@@ -306,7 +306,7 @@ AUTHENTICATION_BACKENDS = ["dvadmin.utils.backends.CustomBackend"]
# ================================================= #
SIMPLE_JWT = {
# token有效时长
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=120),
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=1440),
# token刷新后的有效时间
"REFRESH_TOKEN_LIFETIME": timedelta(days=1),
# 设置前缀

View File

@@ -44,6 +44,8 @@ LOGIN_NO_CAPTCHA_AUTH = True
# ================================================= #
ALLOWED_HOSTS = ["*"]
CUSTOM_APPS = [
"dvadmin.system",
]
# daphne启动命令
#daphne application.asgi:application -b 0.0.0.0 -p 8000

View File

@@ -6,15 +6,17 @@
@Created on: 2021/5/31 031 22:08
@Remark: 公共基础model类
"""
from importlib import import_module
from django.apps import apps
from django.db import models
from django.db.models import QuerySet
from django.conf import settings
from application import settings
table_prefix = settings.TABLE_PREFIX # 数据库表名前缀
class SoftDeleteQuerySet(QuerySet):
class SoftDeleteQuerySet(models.QuerySet):
pass
@@ -106,3 +108,26 @@ def get_all_models_objects(model_name=None):
if model_name:
return settings.ALL_MODELS_OBJECTS[model_name] or {}
return settings.ALL_MODELS_OBJECTS or {}
def get_all_custom_app_models():
"""获取所有项目写的app里的models"""
for app in settings.CUSTOM_APPS:
model_module = import_module(app + '.models')
filter_model = [
getattr(model_module, item) for item in dir(model_module)
if item != 'CoreModel' and issubclass(getattr(model_module, item).__class__, models.base.ModelBase)
]
model_list = []
for model in filter_model:
fields = [
{'title': field.verbose_name, 'name': field.name, 'object': field}
for field in model._meta.fields
]
model_list.append({
'verbose': model._meta.verbose_name,
'model': model.__name__,
'object': model,
'fields': fields
})
yield model_list