Я реконструировал шаблон Django (Django 3.0.2, Python 3.7.5), где я разделил настройки как отдельные файлы для производства и разработки отдельно внутри production.py и development.py соответственно. Здесь sr c было переименовано из main . Они оба импортируют все из base.py . Структура папок моего проекта выглядит следующим образом:
-Django_boilerplate
-src
-core
-migrations
-management
-commands
-rename.py
-main
-settings
-base.py
-development.py
-production.py
-templates
-db.sqlite3
-manage.py
Я написал rename.py , так что когда бы я ни работал над новым проектом, я мог просто запустить проект, запустив этот файл, чтобы переименовать проект соответственно. Мой rename.py файл выглядит следующим образом:
from django.core.management.base import BaseCommand
import os
class Command(BaseCommand):
help = 'Renames a Django project'
def add_arguments(self, parser):
parser.add_argument('new', type=str, help='The new Django project name')
def handle(self, *args, **kwargs):
new_project_name = kwargs['new'][0]
files_to_rename = ['main/settings/base.py',
'main/asgi.py',
'main/wsgi.py', 'manage.py']
folder_to_rename = 'main'
for f in files_to_rename:
with open(f, 'r') as file:
filedata = file.read()
filedata = filedata.replace(folder_to_rename, new_project_name)
with open(f, 'w') as file:
file.write(filedata)
os.rename(folder_to_rename, new_project_name)
self.stdout.write(self.style.SUCCESS(f'Project has been renamed to {new_project_name}'))
Затем я выполнил файл rename.py, запустив
python manage.py rename ecommerce
В первый раз, он запустился и изменил настройки как
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ecommerce.settings.development')
в manage.py и
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ecommerce.settings')
в asgi.py & wsgi. py файлов, но не в base.py , где значения ROOT_URLCONF и WSGI_APPLICATION не изменились.
ROOT_URLCONF = 'main.urls'
WSGI_APPLICATION = 'main.wsgi.application'
После этого я не могу запустить сервер как а также переименовать проект больше. При каждом запуске сервера или файла rename.py в командной строке не отображается сообщение об ошибке. Я ссылался на это из репозитория GitHub https://github.com/justdjango/django_project_boilerplate
Я мог просто клонировать или скопировать коды, но хотел знать, что можно сделать. В чем моя ошибка? EDIT1: добавлены Django и Python сведения о версии EDIT2: я также вручную изменил все имена, которые были изменены в этих файлах, с ecommerce на main обратно, чтобы попытаться проверить, это сработало, но не сработало.