我想知道是否有一种简单的方法来重命名项目。该项目有一个应用程序,我也想重命名。当然,如果我将其重命名为文件夹,它将不起作用。我在这里和谷歌搜索,我找不到答案。谢谢
kru*_*ubo 53
重命名项目实际上比重命名应用程序更容易。这个问题解释了如何重命名应用程序。
要重命名项目,您需要更改项目名称出现的任何位置。 grep -nir oldname .可以帮助您找到它出现的位置。就我而言,我不得不更改以下位置:
将oldprojectname目录重命名为newprojectname
manage.py: 改变 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oldprojectname.settings')
newprojectname/wsgi.py: 改变 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oldprojectname.settings')
newprojectname/settings.py: 变ROOT_URLCONF = 'oldprojectname.urls'变变WSGI_APPLICATION = 'oldprojectname.wsgi.application'
newprojectname/urls.py:在我添加的一行中更改 oldprojectname
Al *_*hdi 15
非常简单高效
将此命令添加到项目中的任何应用程序中,如下所示,
# app/management/commands/renameproject.py
import os
import glob
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
help = 'Renames the Project'
def add_arguments(self, parser):
parser.add_argument('old', nargs='+', type=str, help="current project name")
parser.add_argument('new', nargs='+', type=str, help="new project name")
def handle(self, *args, **options):
old = options["old"][0]
new = options["new"][0]
base = str(settings.BASE_DIR)
projectfiles = []
managefile = os.path.join(base, "manage.py")
projectfiles.append(managefile)
projectfiles += glob.glob(os.path.join(base, old, "*.py"))
projectfiles += glob.glob(os.path.join(base, old, "**", "*.py"))
for pythonfile in projectfiles:
with open(pythonfile, 'r') as file:
filedata = file.read()
filedata = filedata.replace(old, new)
with open(pythonfile, 'w') as file:
file.write(filedata)
os.rename(os.path.join(base, old), os.path.join(base, new))
Run Code Online (Sandbox Code Playgroud)
现在只需运行这个命令
python manage.py renameproject oldname newname
Run Code Online (Sandbox Code Playgroud)
玩得开心
怎么运行的:
在整个项目中搜索 .py 文件并用新名称替换旧名称。
| 归档时间: |
|
| 查看次数: |
16407 次 |
| 最近记录: |