重命名 django 项目的简单方法

amb*_*1s1 31 django

我想知道是否有一种简单的方法来重命名项目。该项目有一个应用程序,我也想重命名。当然,如果我将其重命名为文件夹,它将不起作用。我在这里和谷歌搜索,我找不到答案。谢谢

kru*_*ubo 53

重命名项目实际上比重命名应用程序更容易。这个问题解释了如何重命名应用程序。

要重命名项目,您需要更改项目名称出现的任何位置。 grep -nir oldname .可以帮助您找到它出现的位置。就我而言,我不得不更改以下位置:

  1. oldprojectname目录重命名为newprojectname

  2. manage.py: 改变 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oldprojectname.settings')

  3. newprojectname/wsgi.py: 改变 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oldprojectname.settings')

  4. newprojectname/settings.py: 变ROOT_URLCONF = 'oldprojectname.urls'变变WSGI_APPLICATION = 'oldprojectname.wsgi.application'

  5. newprojectname/urls.py:在我添加的一行中更改 oldprojectname

  • 另外,如果数据库名称与我的例子中的“oldprojectname”有某种关系,请不要忘记更改数据库名称。 (4认同)
  • **newprojectname/asgi.py** 需要与 **newprojectname/wsgi.py** 相同的修改。 (3认同)
  • ...并且可以通过使用代码编辑器中存储库中的搜索和替换功能来简化整个过程。 (2认同)

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 文件并用新名称替换旧名称。

  • 虽然此代码可以回答问题,但提供有关如何和/或为何解决问题的附加上下文将提高​​答案的长期价值。 (7认同)