2025-03-17 18:06:54 +08:00

101 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import logging
from django.core.management.base import BaseCommand
from application.settings import BASE_DIR
logger = logging.getLogger(__name__)
class Command(BaseCommand):
"""
向apps目录中创建App命令:
python manage.py lyadminstartapp app名
python manage.py lyadminstartapp app名1 app名2
"""
def add_arguments(self, parser):
parser.add_argument('appname', nargs='*', type=str, )
def handle(self, *args, **options):
appname_list = options.get('appname')
if appname_list:
for name in appname_list:
app_path = os.path.join(BASE_DIR, "apps",name)
# 判断app是否存在
if os.path.exists(app_path):
print(f"要创建的App名称{name} 已存在,请更换其他名称!")
else:
#创建app文件夹
if not os.path.exists(app_path):
# 如果目标路径不存在就创建
os.makedirs(app_path)
#创建__init__.py文件
with open(os.path.join(app_path, "__init__.py"), 'a', encoding='UTF-8') as f:
pass
migrations_path = os.path.join(app_path, "migrations")
#创建migrations目录和__init__.py文件
if not os.path.exists(migrations_path):
# 如果目标路径不存在就创建
os.makedirs(migrations_path)
with open(os.path.join(migrations_path, "__init__.py"), 'a', encoding='UTF-8') as f:
pass
#创建apps.py文件
app_init_content = f"""from django.apps import AppConfig
class {name.capitalize()}Config(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = 'apps.{name}'
"""
with open(os.path.join(app_path, "apps.py"), 'w', encoding='UTF-8') as f:
f.write(app_init_content)
#创建models.py文件
model_init_content = f"""from django.db import models
from utils.models import CoreModel,BaseModel
"""
with open(os.path.join(app_path, "models.py"), 'a', encoding='UTF-8') as f:
f.write(model_init_content)
#创建views.py文件
view_init_content = f"""from rest_framework.views import APIView
from apps.lymessages.models import MyMessageTemplate,MyMessage,MyMessageUser
from utils.jsonResponse import SuccessResponse,ErrorResponse,DetailResponse
from utils.common import get_parameter_dic,formatdatetime
from django.db.models import Q,F,Sum,Count
from django.db import transaction
from rest_framework import serializers
from rest_framework_simplejwt.authentication import JWTAuthentication
from utils.serializers import CustomModelSerializer
from utils.viewset import CustomModelViewSet
from rest_framework.permissions import IsAuthenticated
from utils.pagination import CustomPagination
import logging
logger = logging.getLogger(__name__)
"""
with open(os.path.join(app_path, "views.py"), 'a', encoding='UTF-8') as f:
f.write(view_init_content)
# 创建urls.py文件
urls_init_content = f"""# -*- coding: utf-8 -*-
#路由文件
from django.urls import path, re_path
from rest_framework import routers
#from apps.lymonitor.views import MonitorManageViewSet
system_url = routers.SimpleRouter()
#system_url.register(r'monitor', MonitorManageViewSet)
urlpatterns = [
# path('getsysteminfo/',MonitorManageViewSet.as_view({{'get':'getsysteminfo'}}), name='lyadminstartapp创建app路由文件名'),
]
urlpatterns += system_url.urls
"""
with open(os.path.join(app_path, "urls.py"), 'a', encoding='UTF-8') as f:
f.write(urls_init_content)
print(f"App名称{name} 创建成功!")
else:
print(f"提示该命令会把app创建到apps目录中")
print(f"请输入要创建的app名称如python manage.py lyadminstartapp app名")