Новичок Джанго: Создание проекта с несколькими приложениями или все в одном - PullRequest
4 голосов
/ 15 марта 2012

Я новичок в мире Django, я разработал несколько «информационных сайтов» (ничего сложного), но на этой неделе мой начальник приказал мне выполнить миграцию большого программного обеспечения, состоящего из 7 модулей.

Итак, я пошел, чтобы прочитать страницу документации и поискать в Google, как я могу разработать эту программу, используя Django.Я знаю, что каждый «модуль» может называться «приложением», поэтому я создаю новый проект и одно приложение для каждого модуля (я не знаю, правильно ли это, потому что модули не будут общедоступными).

Проблема в том, что теперь я не знаю, каков следующий шаг.

Все мои приложения могут обмениваться данными (у каждого приложения есть свои модели, но иногда у одного приложения есть модель, связанная с моделями в других приложениях)?

Где я могу написать код для процесса входа в систему (я создаю приложение manageUsers, которое было задумано для обработки регистрации, редактирования, обмена и проверки профиля текущего или нового пользователя), и мы можем поделитьсяданные этого сеанса через приложения?

Мне нужно еще одно приложение для размещения информации на сайте (например, контакт, информация о ценах ...)?Я использую Python 2.7, Django 1.3, Memcached и Mysql 5.

Если кто-то может мне помочь или подсказать, где это может прояснить эти вопросы, потому что большинство объясняет, как разрабатывать, используя только одно приложение, и в IRC не получил ответаили же мне нужно написать весь код в одном приложении?

С наилучшими пожеланиями

Ответы [ 2 ]

10 голосов
/ 15 марта 2012

Хорошее место для начала (устаревшее, но заслуживающее прочтения; посмотрите также на комментарии пользователей): http://www.djangobook.com/en/2.0/.Главы 1 - 10 являются необходимыми для чтения.При желании вы можете выбирать оставшиеся главы, если хотите.

Да, все приложения Django могут обмениваться данными друг с другом.Вы создаете несколько приложений Django, размещенных в рамках одного проекта Django.Проект устанавливает общую базу данных для использования, и каждое Приложение создает Модели, которые используют указанную базу данных.App1 может взаимодействовать с App2 и наоборот.

Django Project (one)  <----->>  (many) Django Application

Обычно вы разделяете приложения на основе общей функции.Учетные записи пользователей получают свое собственное приложение (см. Ниже Auth).Сообщения в блоге получают другое.А интерфейс Google Maps получит другой.Пользовательские подписки, другое.

Для учетных записей пользователей и входа в систему Django предоставляет Auth Module .Вы можете хранить учетные записи пользователей непосредственно в Django или настроить его для общения с чем-то другим, например, с Active Directory.Auth работает «довольно хорошо» из коробки, хотя я лично настроил немного, чтобы разрешить использование 255-символьных адресов электронной почты в качестве имен пользователей (по умолчанию он ограничен 40 символами). Глава 14 в книге Джанго может быть немного легче для чтения, чем официальные документы Auth.Если вы используете Auth, вам не нужно создавать свое собственное приложение Django, так как Auth уже один!Вы просто устанавливаете его в settings.py, и вы - золотой.

Ваша структура Django, вероятно, будет выглядеть примерно так:

/Project/
  __init__.py
  manage.py
  settings.py
  urls.py

  App1/
    __init__.py
    forms.py
    models.py
    views.py
    templates/App1/
      template1.html
      template2.html

  App2/
    ...

App2 может получить доступ к моделям данных App1, выполнив: from Project.App1.models import someModel

2 голосов
/ 15 марта 2012

Для меня правила просты.

  1. Если вам нужно скопировать и вставить некоторый код из одного проекта в другой - создайте для него приложение
  2. Если код одного из модулей приложения превышает 1 тыс. Строк и / или его трудно поддерживать - ищите что-то, что можно переместить в отдельное приложение
  3. Группировка функций в приложения для минимизации перекрестных связей между ними

Для соединения вы можете использовать сигналы и сеансы

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