Как мне создать подпрограммы в 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

Итак, вы можете сделать это следующим способом:

  1. Создайте sub_app1 каталог в app каталог
  2. 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, вам необходимо выполнить следующие шаги:

  1. Создайте подкаталог в родительском каталоге, куда вы хотите добавить подприложение.
       mkdir finances/expences

Примечание: здесьfinancesявляется существующим родительским приложением и будет следующим вложенным подприложением.

  1. Если подкаталог создан успешно, выполните следующую команду в терминале.

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 вашего проекта.

Другие вопросы по тегам