Как мне создать подпрограммы в Django?
Я новичок в Django, но довольно опытный в программировании. У меня есть набор связанных приложений, которые я хотел бы сгруппировать в подпроцесс, но не могу понять, как получить manage.py, чтобы сделать это для меня.
В идеале я получу такую структуру:
project/
app/
subapp1/
subapp2/
я пробовал manage.py startapp app.subapp1
а также manage.py startapp app/subapp1
но это говорит мне, что /
а также .
недопустимые символы для имен приложений.
Я попытался перейти в каталог приложения и запустить ../manage.py subapp1
но это делает supapp1 на верхнем уровне. ПРИМЕЧАНИЕ, я не пытаюсь напрямую создать отдельное приложение. Я пытаюсь сделать все это из проекта.
9 ответов
Вы все еще можете сделать это:
cd app
django-admin startapp subapp1
Это будет работать (создать базовую структуру приложения), однако app
а также subapp1
будет по-прежнему рассматриваться как два несвязанных приложения в том смысле, что вы должны добавить оба INSTALLED_APPS
в ваших настройках.
Отвечает ли это на ваш вопрос? В противном случае вы должны рассказать больше о том, что вы пытаетесь сделать.
Согласно документации Django,
Если указан дополнительный пункт назначения, Django будет использовать этот существующий каталог, а не создавать новый. Ты можешь использовать '.' обозначить текущий рабочий каталог.
Например:
django-admin startapp myapp / Пользователи / jezdez / Код / myapp
Итак, вы можете сделать это следующим способом:
- Создайте
sub_app1
каталог вapp
каталог python manage.py startapp sub_app1 app/sub_app1
Это просто
Шаг 1 - Создайте проект
django-admin startproject app
cd app
Шаг 2 - Создайте папку api
mkdir api
cd api
touch __init__.py
cd ..
Шаг 3 - Создайте вложенные приложения
python manage.py startapp user ./api/user
python manage.py startapp post ./api/post
python manage.py startapp comment ./api/comment
Шаг 4 - Зарегистрируйте вложенные приложения
INSTALLED_APPS = [
...
'api.user',
'api.post',
'api.comment',
]
Шаг 5 - Измените название приложений
Обновите имя в файлах apps.py во всех трех приложениях.
class UserConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api.user'
class PostConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api.post'
class CommentConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api.comment'
и мы закончили!
Примечание: шаг 2 важен
Django не поддерживает "подпрограммы" как таковые. Если вы хотите, чтобы код собирался в пакеты внутри приложения, просто создайте их самостоятельно. В противном случае вы просто просите боли.
Перейдите в папку с приложениями. Пытаться:
python ../manage.py startapp app_name
django-admin.py startapp myapp /Users/jezdez/Code/myapp
Справка: документация администратора Django
Чтобы создать вложенное приложение в проекте Django, вам необходимо выполнить следующие шаги:
- Создайте подкаталог в родительском каталоге, куда вы хотите добавить подприложение.
mkdir finances/expences
Примечание: здесьfinances
является существующим родительским приложением и будет следующим вложенным подприложением.
- Если подкаталог создан успешно, выполните следующую команду в терминале.
python manage.py startapp расходы финансы/расходы
Убедитесь, что подкаталог теперь выглядит как приложение Django и будет вести себя так.
Не забудьте зарегистрировать это приложение в файле настроек и изменить имя из файла конфигурации приложения.
expenses
, нравиться -
class ExpensesConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'finances.expenses'
Здесь имя было только «расходы», но оно было изменено на «finances.expenses», иначе миграции применяться не будут.
используйте эту команду в терминале:
python manage.py startapp имя_приложения
на самом деле нет никакой разницы, если вы используете django-admin или manage.py в этом случае - оба создадут https://docs.djangoproject.com/en/4.0/ref/django-admin/#django-admin-and- управлять-py
Кроме того, manage.py автоматически создается в каждом проекте Django. Он делает то же самое, что и django-admin, но также устанавливает переменную среды DJANGO_SETTINGS_MODULE, чтобы она указывала на файл settings.py вашего проекта.