我想知道是否有一种简单的方法可以重命名项目。该项目有一个我也想重命名的应用程序。当然,如果我将其重命名为文件夹,它将不起作用。我在这里和谷歌搜索,我找不到答案。谢谢
6 回答
重命名项目实际上比重命名应用程序更容易。这个问题解释了如何重命名应用程序。
要重命名项目,您需要更改项目名称出现的任何位置。 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
非常简单高效
像这样将此命令添加到项目中的任何应用程序中,
# 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 文件并将旧名称替换为新名称。
要重命名 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 个文件中出现项目名称,分别是:
在
new_project_name/asgi.py
文件中(评论):old_project_name项目的 ASGI 配置。
在
new_project_name/asgi.py
文件(代码)中:os.environ.setdefault('DJANGO_SETTINGS_MODULE', ' old_project_name .settings')
在
manage.py
文件(代码)中:os.environ.setdefault('DJANGO_SETTINGS_MODULE', old_project_name .settings')
在
new_project_name/settings.py
文件中(评论):old_project_name项目的 Django 设置。
在
new_project_name/settings.py
文件(代码)中:ROOT_URLCONF = ' old_project_name .urls'
在
new_project_name/settings.py
(代码)中:WSGI_APPLICATION = ' old_project_name .wsgi.application'
在
new_project_name/urls.py
文件中(评论):old_project_name URL 配置
在
new_project_name/wsgi.py
文件中(评论):old_project_name项目的 WSGI 配置。
在
new_project_name/wsgi.py
文件(代码)中:os.environ.setdefault('DJANGO_SETTINGS_MODULE', ' old_project_name .settings')
注意:要将文件中的old_project_name更改为new_project_name,您可以使用 IDE/文本编辑器的查找和替换功能来避免任何错误。
提示:如果您在项目中没有做太多工作,那么最好创建一个新的 Django 项目,然后复制并粘贴不需要任何更改的代码,而不是更改项目名称。
我认为这里最好的解决方案是简单地打开你的 settings.py、urls.py、views.py 和任何其他可能依赖于你的项目名称的文件,然后在你的文本编辑器中使用 find&replace 功能。
或者,如果您还没有做太多工作,请使用 django-admin.py 开始一个新项目并复制/粘贴。
作为 Python 和 Django 的初学者,以下简单的步骤对我有用。
更新项目中的外部和内部文件夹名称(直接来自 Windows 资源管理器或任何编辑器,如 Visual Studio)
在以下项目文件中搜索并用新项目名称替换旧项目名称
一种。管理.py
b。设置
.py c. wsgi.py
d.asgi.py
e. 网址.py重新启动服务器并确认一切是否正常
假设您的项目名称是 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
将内部和外部 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
将项目文件中对 old_project_name 的引用更改为 new_project_name。大多数情况下,您需要更改 settings.py、wsgi.py 和 manage.py 中的引用
在这些更改后运行本地服务器并检查您的路由是否正常工作。
更改 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>
在终端运行
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)
在终端中运行以下命令。这将更改您当前的远程存储库 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)
现在您可以将新更新推送到远程存储库。
更新虚拟环境。这是可选的,但它有助于识别项目的虚拟环境映射。我使用 virtualenvwrapper。如果您使用不同的命令,则必须根据您的虚拟环境更新命令。
在终端中运行以下命令。这将创建一个名为 new_project_name 的 old_project_name 环境设置的副本。
cpvirtualenv old_project_name new_project_name
删除旧环境。此步骤也是可选的。
在终端中运行以下命令
rmvirtualenv old_project_name