Несколько приложений Django в одном представлении - PullRequest
6 голосов
/ 16 ноября 2011

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

Скажем, у меня есть несколько приложений, которые также реализуют, как эти приложения должны быть представлены на уровне представления.

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

Быстрый пример: скажем, у меня есть два приложения (app1 и app2), оба воплощают свою основную модель и представления. Теперь мне нужно, чтобы моя индексная страница содержала представление этих двух представлений. Как я могу реализовать общее представление, которое все еще использует представления приложения, вместо того, чтобы обращаться непосредственно к их моделям? Я бы предпочел, чтобы мое приложение все еще контролировало его вид.

Спасибо

Ответы [ 2 ]

5 голосов
/ 16 ноября 2011

Я думаю, вы можете использовать render_to_string ярлык. Таким образом, в представлениях приложения вы вводите:

render_to_string(somestuff) # instead of render() or render_to_responce()

, а затем в индексном представлении что-то вроде этого:

render(request, 'index.html', {'block1': view1(request), 'block2': view2(request)})

PS: Кроме того, после того, как я написал это, это выглядит не очень хорошо (это выглядело лучше в моей голове :)).

3 голосов
/ 16 ноября 2011

Отличный вопрос, я говорю вам, как я это сделал.

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

Есть хорошая книга, Практические django Projects, 2-е издание , которая, я думаю, немного устарела, но дает вам отличное представление об организации проекта.

...