From b2aa22ce84c4abae55822dc1346b15c0c1565cf6 Mon Sep 17 00:00:00 2001 From: ahhui Date: Thu, 3 Aug 2023 18:04:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=20=E9=87=8D=E6=9E=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 所有项目的app都放在env.py里的CUSTOM_APPS列表里注册,为了支持按照项目app查找model --- backend/.gitignore | 2 +- backend/application/settings.py | 4 ++-- backend/conf/env.example.py | 10 ++++++++++ backend/dvadmin/utils/models.py | 29 +++++++++++++++++++++++++++-- 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 backend/conf/env.example.py diff --git a/backend/.gitignore b/backend/.gitignore index 7119be0..a09ea3d 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -91,7 +91,7 @@ ENV/ **/migrations/*.py !**/migrations/__init__.py *.pyc -conf/ +conf/* !conf/env.example.py db.sqlite3 media/ diff --git a/backend/application/settings.py b/backend/application/settings.py index 17453c8..d5193a3 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -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), # 设置前缀 diff --git a/backend/conf/env.example.py b/backend/conf/env.example.py new file mode 100644 index 0000000..ee2e518 --- /dev/null +++ b/backend/conf/env.example.py @@ -0,0 +1,10 @@ +DATABASE_ENGINE = 'django.db.backends.mysql' +DATABASE_NAME = 'dvadmin3' +DATABASE_USER = 'root' +DATABASE_PASSWORD = 'root' +DATABASE_HOST = '127.0.0.1' +DATABASE_PORT = '3306' +ALLOWED_HOSTS = ['*'] +CUSTOM_APPS = [ + "dvadmin.system", +] diff --git a/backend/dvadmin/utils/models.py b/backend/dvadmin/utils/models.py index 2c45fa7..7fce757 100644 --- a/backend/dvadmin/utils/models.py +++ b/backend/dvadmin/utils/models.py @@ -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