簡體   English   中英

在 django 中更改項目名稱

[英]Changing a project name in django

我使用 Pycharm 的 refactor > rename 將 django 項目的名稱從oldnamenewname 我已經瀏覽了這個項目,它似乎到處都改變了名字。 但是當我嘗試運行服務器時,這就是我得到的,

Traceback (most recent call last):
  File "/Users/melissa/Dropbox/newname/manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 317, in execute
    settings.INSTALLED_APPS
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/conf/__init__.py", line 43, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/conf/__init__.py", line 106, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'oldname'

有人可以幫我弄這個嗎?

更改項目名稱時出現同樣的錯誤,問題是您正在使用PyCharm運行服務器,不是嗎? 希望您使用帶有 Django 支持的PyCharm創建了您的項目。 首先將以下設置添加到您的wsgi.pyasgi.pymanage.py文件中,

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

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

然后轉到您的settings.py並更改以下設置,

ROOT_URLCONF = 'oldname.urls
WSGI_APPLICATION = 'oldname.wsgi.application'

ROOT_URLCONF = 'newname.urls
WSGI_APPLICATION = 'newname.wsgi.application'

如果您沒有獲得PyCharm的 Django 支持,則應執行此解決方案,否則您將再次遇到相同的錯誤。 您可以通過使用其他終端來嘗試此操作,而無需獲取PyCharm的 Django 支持並使用python manage.py runserver命令運行您的服務器。 如果您的項目沒有任何其他錯誤,您可以看到此解決方案正在運行。 然后我意識到PyCharm的 Django Support 有問題,我提供的幫助僅適用於使用PyCharm的 Django Support 的人。

  1. 轉到您的項目並單擊編輯配置設置。

    Pycharm 項目配置

  2. 您可以看到 Environment 變量仍然具有以前的值,只需單擊角落的圖標即可編輯DJANGO_SETTINGS_MODULE變量。

    在此處輸入圖像描述

  3. 然后添加您的新項目名稱newname ,其中包含settings.py文件。

    在此處輸入圖像描述

而已。

確保更改 settings.py 、 wsgi.py 和 manage.py 中的名稱

有一個 Django 應用程序獲取其應用程序名稱及其所在位置的主要位置

myappname/apps.py

from django.apps import AppConfig


class StorefrontConfig(AppConfig):
    name = 'myappname'

然后在settings.py你可以找到

INSTALLED_APPS = [
    'myappname',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

]

更改應用程序的名稱后,您希望在settings.pyapps.py中進行更改

查看“運行/調試配置”、“環境”和“環境變量”下的內容。舊名稱可能在其中之一中找到。

我有一個 Django 2.2 完美運行的解決方案。 您已將舊項目重命名為 example django_master 然后您需要更改文件列表:

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

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

application = get_wsgi_application()

## django_master.settings

設置.py

#line 54 

ROOT_URLCONF = 'django_master.urls'

#line 72 django 2.2 default code

WSGI_APPLICATION = 'django_master.wsgi.application'

在這三個更改之后,您的項目現在運行python mange.py runserver

如果仍然無法在項目目錄中找到舊項目名稱:

在此處輸入圖像描述

希望能幫助到你?

無需通過所有步驟來更改項目,只需創建一個新項目即可。 這對我在沒有配置數據庫的項目上使用 MacOS 上的 PyCharm 很有用。

  • 使用新項目名稱創建一個新目錄
  • 在 PyCharm 中,在剛剛創建的目錄中使用新的項目名稱創建一個新的 Django 項目
  • 從舊項目中復制您的應用程序
  • 使用您在舊目錄中所做的更改更新項目目錄中的 urls.py。 您可能只需將其復制到項目中即可。 做一個文件比較以確保
  • 使用對舊版本所做的更改來更新 settings.py。 副本不起作用,因為其中使用了新項目名稱
  • 復制 PyCharm 應用程序首選項/文件觀察程序。 我所有的其他 PyCharm 首選項設置似乎對所有 PyCharm 項目都是全局的。

除了更容易做之外,該方法不會觸及您現有的項目。 如果它不起作用,只需將其刪除。

實現這一點的最佳方法是重命名wsgi.pyasgi.pysettings.pymanage.py文件中所有出現的項目名稱

我創建了一個簡單的Python 腳本來處理任何項目。 這允許快速且無錯誤的過程。

只需將rename.py腳本放在 Django 項目的主文件夾(與manage.py文件相同的級別)並運行該腳本。

如果有人像我一樣健忘,請在此處發布。

我有同樣的問題,不是我:

解決的辦法是保存使用查找和替換后在“文本編輯器”中打開的所有文件。

您還需要更改 pycharm 設置 .iml 和 .xml 引用,以確保您的項目可以讀取和執行 manage.py 任務。

你可以運行這個命令。 例如,如果我想將 old_project_name 更改為 new_project_name 在我是python manage.py rename old_project new new_project的路徑中

我正在使用 VSCode,因為我只是在項目級別上搜索了我想要更改的名稱並將其替換為另一個名稱(我想要的新名稱)!。
它沒有打嗝。

我的項目中也發生了同樣的問題。 我不得不將我的 project_old_app_name 更改為 project_new_app_name。 當我使用 Visual Studio 代碼將舊的更改為新的時,請替換所有方法。

我收到了這個錯誤

 ...
    return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 994, in _gcd_import
      File "<frozen importlib._bootstrap>", line 971, in _find_and_load
      File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
    ModuleNotFoundError: No module named 'project_new_app_name' 

然后我意識到我必須將我的 project_old_app_name 的文件夾/目錄應用程序名稱更改為 project_new_app_name,然后它才能工作。

注意:-我遇到了不匹配表名的問題,因為它被命名為 old_app_table_name。 所以,在這種情況下(我使用 sqlite db)我必須執行python manage.py migrate並再次插入數據。 或者我們可以在 sqlite 瀏覽器中將所有 old_app_name_tablenames 更改為 new_app_name_tablenames。

我已經手動更改了項目名稱。 如果沒問題,請查看我的答案https://stackoverflow.com/a/63303738/9384511

當我重命名我的項目時,我剛剛遇到了這個問題。 原來,我正確地重命名了所有內容。 只是我的環境保留了舊的環境變量,所以我不得不重置它。

因此,對於任何發現此問題並認為他們已重命名manage.py 、所有settings.pywsgi.pyasgi.py等的人:

運行env | grep DJANGO env | grep DJANGO ,並確保DJANGO_SETTINGS_MODULE根本沒有設置,或者設置為新值。 這很可能是您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM