Подтвердить что ты не робот

Несколько приложений с django

Я изучаю структуру Django, читаю документацию, но не нашел ссылок на то, как создавать более одного приложения в одном проекте, где каждое приложение имеет несколько приложений. Например, приложение Blog, с приложениями Пользователи, комментарии, сообщения,..., реализация и задачи с приложениями Клиенты, пользователи, вложения... Как мне сделать?

localhost
localhost/blog/ (posts, user, comment, ...)
localhost/tasks/ (task, user, attachment, ...)

<my project>
-- manage.py
-- <project name>
-- -- blog
-- -- -- posts
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py
...
-- -- tasks
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py
...
4b9b3361

Ответ 1

Каждое приложение будет иметь их в своей папке:

  • views.py
  • models.py
  • другие опции (admin.py...)

Итак, у вас есть:

Project
-- manage.py
-- Project
-- -- views.py
-- -- models.py
-- -- others
-- -- APP1
-- -- -- views.py
-- -- -- models.py
-- -- -- others
-- -- APP2
-- -- -- views.py
-- -- -- models.py
-- -- -- others
-- -- APPX
-- -- -- views.py
-- -- -- models.py
-- -- -- others

Утилита - это различие между функциональными возможностями (вызовите Notification.models.notification, если в нем есть приложение "Уведомление" и модель уведомления).

Модель - это архитектура объекта. Таким образом, вы вызываете, например, User.username или Task.name. Django автоматически создает в базе данных таблицу.

Еще один инструмент Django: вы можете использовать admin view (который может редактировать, создавать, редактировать, объекты, которые используют ваши модели) или изменить этот интерфейс (посмотрите что страница)

Если вы хотите создать систему идентификации и создать формы, вы можете использовать собственную систему администратора.

С ВАШИМ ПРИМЕРОМ:

<my project>
-- manage.py
-- <project name>
-- -- urls.py
-- -- models.py <--- User model exists in Django and here you can add informations to the defaut model it is in this file because I suppose it will be used in all your project.
-- -- views.py

-- -- blog    <--- It an app.
-- -- -- -- views.py 
-- -- -- -- urls.py
-- -- -- -- models.py <--- Posts, Comments are models for the blog, so you explain them here.

-- -- tasks   <--- Another app.
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py  <--- Task model for exemple

Ответ 2

Что вы должны знать о джанго:

  • URL-карта не влияет на файловую систему или код приложения. Это означает, что ваши URL-адреса не имеют отношения 1 к 1 с вашим кодом. У вас может быть несколько URL-адресов, указывающих на один и тот же фрагмент кода (указывающий на один и тот же вид). Это отличается от PHP, например, когда URL-адреса отображаются в файловой системе.

  • Приложения не являются "виджетами" или "портлетами". Приложение представляет собой всего лишь модуль python с уже включенными файлами (views.py, models.py и __init__.py); и у вас может быть столько приложений, сколько хотите. Вы также можете иметь приложения, которые недоступны с помощью URL-адреса - они есть только для поддержки других приложений; и ваши приложения не должны иметь то же имя, что и URL-адреса.

Поэтому помните, что вы можете создать одно приложение, назовите его www и внутри его views.py, определите эти очень творчески названные методы:

def blog(request):
   pass

def tasks(request):
   pass

Теперь в вашем urls.py вы можете:

url(r'^blog/$','www.views.blog',name='blog-index'),
url(r'^blog/posts/$','www.views.blog',name='blog-posts',kwargs={'view_posts': True}),
url(r'^tasks/$','www.views.tasks',name='task-index'),
url(r'^tasks/attachments/$','www.views.tasks',name='task-attachments'),

Ответ 3

Вы смущены тем, что такое приложение. Приложение представляет собой набор связанных функций, обычно (но не обязательно), включая модели, представления и шаблоны.

"Пользователи" - это не приложение, это модель, но вы обычно используете встроенное приложение django.contrib.auth для обеспечения пользовательских функций. Любое приложение может использовать любой другой код приложения, включая модели. И вы можете иметь столько моделей, сколько хотите в одном приложении.