Интересно, как построить это в Джанго

Сейчас я работаю над большим проектом Django.

Огромный тематический портал со множеством тематических центров и профилей книг и других медиа, а также профилей авторов и обычных профилей пользователей, которые также могут иметь профили авторов

Теперь, что я делаю, это:

Одно приложение django, папка шаблонов, как обычно, и теперь количество шаблонов становится огромным, когда я создаю шаблоны.

У меня никогда не было нескольких приложений в одном проекте.

Может кто-нибудь сказать мне, если это то, что я делаю, нормально, или я должен пойти для нескольких приложений?

Или, если я скажу иначе: когда имеет смысл иметь несколько приложений в одном проекте?

заранее спасибо

2 ответа

Решение

Django создан, чтобы процветать, имея несколько приложений. 1 приложение для регистрации пользователей, 1 приложение для профилей, 1 приложение для комментариев, 1 приложение для публикаций в блогах и т. Д. И т. Д.

Как вы указали, выполнение всего в одном приложении быстро приведет к беспорядку. Лучший способ с Django - создавать множество очень специфических приложений. Это также позволяет вам иметь больше приложений, которые вы можете использовать в других проектах, если хотите.

Существуют десятки возможных "структур" для проекта Django. Я бы пошел на самый модульный подход. А для каждой функциональности просто спросите себя: относится ли это непосредственно к другому приложению? Если ответ "нет", вам, скорее всего, лучше создать для него отдельное приложение.

Например, одно и то же приложение для публикации блогов можно использовать на нескольких веб-сайтах, и вам нужно всего лишь изменить шаблон, чтобы он соответствовал новому макету / дизайну страницы. Вся логика должна быть в основном одинаковой. И логика поста в блоге не должна быть связана с логикой просмотра профиля или чего-то еще.

Пример: для приложения с комментариями модель может выглядеть так:

from django.db import models

from profile.models import Profile
from blog.models import Blog

class Comment(models.Model):
    user = models.ForeignKey(Profile, related_name='comments')
    blog = models.ForeignKey(Blog, related_name='comments')
    message = models.CharField(max_length=200)

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

  • основное приложение с вашими основными шаблонами представлений и моделей (
  • учетные записи с шаблонами и моделями аутентификации
  • инструменты приложение с полезными вещами

и приложения, которые используют вышеупомянутое

  • topiccenter1 - специальные шаблоны, виды и модели
  • topiccenter2 - специальные шаблоны, виды и модели

Хорошей структурой для начала является шаблон из "Two Scoops of Django" https://github.com/twoscoops/django-twoscoops-project

"Спасибо, очень хорошее руководство. Мне было интересно, потому что все модели связаны, разве я не разрушу отношения, если разделю их на несколько приложений? "

Вы должны быть в состоянии разделить модели по приложениям - прочитайте:

Определить отношение ManyToMany в другом приложении в Django

Отношения Django между приложениями: как разделить приложения?

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