35

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

4

6 回答 6

63

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

要重命名项目,您需要更改项目名称出现的任何位置。 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

于 2019-10-16T12:24:42.730 回答
6

非常简单高效

像这样将此命令添加到项目中的任何应用程序中,

# 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))

现在只需运行此命令

python manage.py renameproject oldname newname 

玩得开心

这个怎么运作:

在整个项目中搜索 .py 文件并将旧名称替换为新名称。

于 2020-10-13T08:28:13.373 回答
3

要重命名 Django 项目,您需要在项目出现的任何位置更改项目名称。

首先,将外部和内部项目目录名称从old_project_name重命名为new_project_name

因此,如果项目目录如下所示:

    old_project_name // outer project directory old name
      old_project_name// inner project directory old name
        --__init__.py
        --asgi.py
        --settings.py
        --urls.py
        --wsgi.py
      app_name // any app u created in the project
      db.sqlite3
      manage.py

然后更改为:

    new_project_name // outer project directory new name
      new_project_name// inner project directory new name
        --__init__.py
        --asgi.py
        --settings.py
        --urls.py
        --wsgi.py
      app_name // any app u created in the project
      db.sqlite3
      manage.py

2021 年 Django 3.2.3 版本,共 9 个地方(包括注释和代码)在 5 个文件中出现项目名称,分别是:

  1. new_project_name/asgi.py文件中(评论):

    old_project_name项目的 ASGI 配置。

  2. new_project_name/asgi.py文件(代码)中:

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', ' old_project_name .settings')

  3. manage.py文件(代码)中:

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', old_project_name .settings')

  4. new_project_name/settings.py文件中(评论):

    old_project_name项目的 Django 设置。

  5. new_project_name/settings.py文件(代码)中:

    ROOT_URLCONF = ' old_project_name .urls'

  6. new_project_name/settings.py(代码)中:

    WSGI_APPLICATION = ' old_project_name .wsgi.application'

  7. new_project_name/urls.py文件中(评论):

    old_project_name URL 配置

  8. new_project_name/wsgi.py文件中(评论):

    old_project_name项目的 WSGI 配置。

  9. new_project_name/wsgi.py文件(代码)中:

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', ' old_project_name .settings')

注意:要将文件中的old_project_name更改为new_project_name,您可以使用 IDE/文本编辑器的查找和替换功能来避免任何错误。

提示:如果您在项目中没有做太多工作,那么最好创建一个新的 Django 项目,然后复制并粘贴不需要任何更改的代码,而不是更改项目名称。

于 2021-05-21T16:08:52.710 回答
2

我认为这里最好的解决方案是简单地打开你的 settings.py、urls.py、views.py 和任何其他可能依赖于你的项目名称的文件,然后在你的文本编辑器中使用 find&replace 功能。

或者,如果您还没有做太多工作,请使用 django-admin.py 开始一个新项目并复制/粘贴。

于 2013-08-17T22:32:29.690 回答
1

作为 Python 和 Django 的初学者,以下简单的步骤对我有用。

  1. 更新项目中的外部和内部文件夹名称(直接来自 Windows 资源管理器或任何编辑器,如 Visual Studio)

  2. 在以下项目文件中搜索并用新项目名称替换旧项目名称

    一种。管理.py
    b。设置
    .py c. wsgi.py
    d.asgi.py
    e. 网址.py

  3. 重新启动服务器并确认一切是否正常

于 2021-03-08T15:43:59.817 回答
0

假设您的项目名称是 old_project_name,并且您想将其更改为 new_project_name。您还在 old_project_name 中创建了一个名为 my_app 的应用程序。您的目录结构将类似于 -

old_project_name
  --old_project_name
    --__init__.py
    --settings.py
    --urls.py
    --wsgi.py
  my_app
    --Files and folders under my_app
  db.sqlite3
  manage.py
  1. 将内部和外部 old_project_name 目录名称重命名为 new_project_name。更改目录结构后,将类似于 -

     new_project_name
       --new_project_name
         --__init__.py
         --settings.py
         --urls.py
         --wsgi.py
       my_app
         --Files and folders under my_app
       db.sqlite3
       manage.py
    
  2. 将项目文件中对 old_project_name 的引用更改为 new_project_name。大多数情况下,您需要更改 settings.py、wsgi.py 和 manage.py 中的引用

  3. 在这些更改后运行本地服务器并检查您的路由是否正常工作。

  4. 更改 git 存储库名称。这是可选的,但它是可取的,因为它很容易跟踪您的项目。如果您已将项目添加到 bitbucket 或 github,则登录到 bitbucket 或 github 并将存储库名称更改为 new_project_name。假设您的旧存储库 url 是https://<yourusername>@bitbucket.org/<yourusername>/old_project_name.git 重命名存储库后,您的项目 git url 将更改为类似https://<yourusername>@bitbucket.org/<yourusername>/new_project_name.git>

  5. 在终端运行

     git remote -v
    

    它将列出您当前的远程存储库 url

     origin https://<yourusername>@bitbucket.org/<yourusername>/old_project_name.git(fetch)
     origin https://<yourusername>@bitbucket.org/<yourusername>/old_project_name.git(push)
    
  6. 在终端中运行以下命令。这将更改您当前的远程存储库 url

     git remote set-url origin https://<yourusername>@bitbucket.org/<yourusername>/new_project_name.git
    

    在终端运行 git remote -v 它现在会列出类似

     origin https://<yourusername>@bitbucket.org/<yourusername>/new_project_name.git(fetch)
     origin https://<yourusername>@bitbucket.org/<yourusername>/new_project_name.git(push)
    

    现在您可以将新更新推送到远程存储库。

  7. 更新虚拟环境。这是可选的,但它有助于识别项目的虚拟环境映射。我使用 virtualenvwrapper。如果您使用不同的命令,则必须根据您的虚拟环境更新命令。

    在终端中运行以下命令。这将创建一个名为 new_project_name 的 old_project_name 环境设置的副本。

     cpvirtualenv old_project_name new_project_name
    
  8. 删除旧环境。此步骤也是可选的。

    在终端中运行以下命令

     rmvirtualenv old_project_name
    
于 2020-08-07T14:22:47.033 回答