Интересно, как построить это в Джанго
Сейчас я работаю над большим проектом 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 между приложениями: как разделить приложения?