Путаница в названии приложения django - PullRequest
0 голосов
/ 03 октября 2010

Я узнал Джанго по книге Джанго и документу.В примере книги django проект называется mysite, и внутри этого проекта есть приложение под названием book.Так что в этом случае приложение называется «книга».У меня нет проблем с этим.

Моя путаница возникает перед многоразовыми приложениями.Повторно используемые приложения обычно находятся за пределами проекта.Например, у django-registration есть только независимая папка «регистрация».Так как называется его приложение?«Регистрация», верно?

Если это так, то нет ли несоответствия в именах приложений?В первом случае имя приложения выглядит как имя папки (или имя подпакета) в рамках проекта, тогда как во втором случае имя приложения является именем верхнего пакета.

Я знаю, что большинство из вас скажет«Почему вы одержимы названием приложения? Просто убедитесь, что структура пакета правильная и django может работать без проблем».Да, в большинстве случаев имя приложения - это не что иное, как имя.За исключением одного случая: укажите AUTH_PROFILE_MODULE.Как объясняется в документе,

Чтобы указать, что эта модель является моделью профиля пользователя для данного сайта, заполните параметр AUTH_PROFILE_MODULE строкой, состоящей из следующих элементов, разделенных точкой:

  1. Имя приложения (с учетом регистра), в котором определена модель профиля пользователя (другими словами, имя, которое было передано в manage.py startapp для создания приложения).
  2. Имя класса модели (без учета регистра).

Если у меня есть модель в качестве профиля пользователя в пакете с возможностью изменения результатов, я должен знать приложениеимя для правильного указания AUTH_PROFILE_MODULE.

Использует ли django определенный порядок поиска путей для определения имени приложения?

Ответы [ 4 ]

1 голос
/ 03 октября 2010

Имя приложения - это имя каталога, заглавные буквы и все, если вы не перейдете к дополнительной работе, чтобы изменить имя в соответствующем файле __init__.py.В конце концов, приложения Django - это всего лишь модули Python, и применяются все те же правила.

Если вы когда-нибудь увидите имя приложения или модуля с другой заглавной буквой или другими модификациями, это не отражает фактическое приложение или модульназвание.Вместо этого, то, что вы видите, является результатом некоторой «красивой печати», которую, как известно, приложение администратора Django делает в некоторых случаях.Это только для отображения.

1 голос
/ 03 октября 2010

Моя путаница возникает из-за многоразовых приложений. Повторно используемые приложения обычно находятся за пределами проекта. Например, у django-registration есть только независимая папка «регистрация». Так как называется его приложение? «Регистрация», верно?

django-registration - название проекта. Имя приложения registration:

  • в списке приложений вы используете только имя приложения: registration
  • в других местах вы будете использовать import registration

Если это так, то нет ли несоответствия в именах приложений? В первом случае имя приложения выглядит как имя папки (или имя подпакета) в рамках проекта, а во втором случае имя приложения является именем верхнего пакета.

Думайте о проекте как о простой коллекции приложений: вы можете хранить приложения как подпапки или помещать их в отдельную папку (которая должна быть включена в PYTHONPATH). В обоих случаях имя приложения совпадает.

Update

manage.py добавляет в PYTHONPATH как текущую папку (чтобы вы могли использовать import app.module), так и родительскую папку (чтобы вы могли использовать project.settings и project.urls). Итак, если вы можете настроить Pydev для добавления папки проекта в PYTHONPATH, то вы можете импортировать приложения как app.module, независимо от имени проекта.

0 голосов
/ 03 октября 2010

Имя приложения - это просто имя модуля Python. Ничего больше.

Имя модуля Python - это имя корпуса корневой папки модуля, которое должно содержать файл init .py.

Если вы хотите узнать, как это имя, перейдите в папку site-packages и найдите свой модуль.

0 голосов
/ 03 октября 2010

Когда вы развертываете и применяете приложение как отдельный пакет, это просто еще один пакет Python, который реализует представления, шаблоны, теги шаблонов Django и т. Д. Следовательно, путь поиска Django - это сам путь поиска Python. Вот почему люди говорят: «Просто убедитесь, что структура пакета правильная и django может работать без проблем».

Очевидно, что если имя пакета конфликтует с чужим пакетом, у вас будут проблемы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...