Django: как связать различные логические части веб-страницы - PullRequest
0 голосов
/ 23 марта 2010

все. Я только начинаю с django, так что извините за возможно глупый вопрос.

Представьте себе, у меня есть веб-страница с 3 логическими частями: контент, динамическое меню, баннеры. Мне кажется, нормально иметь шаблон с чем-то вроде:

{% include "banners.html" %}
{% include "menu.html" %}
{% include "content.html" %}

Но тогда как мне это сделать? У каждого элемента своя логика в отдельном представлении в отдельном приложении. Как запустить выполнение всех трех представлений и отобразить все три шаблона?

P.S. Есть ли подобный sourceforge сайт для django-приложений, где я мог бы посмотреть, как люди работают в реальных проектах?

1 Ответ

2 голосов
/ 23 марта 2010

Стандартный способ сделать это следующим образом:

Шаблоны:

  • Иметь base.html с баннерами, меню и пустым блоком тела.
  • Для каждого шаблона расширьте base.html и переопределите блок body.

    {% extends "base.html" %}
        {% block body %}
        -- Your this page's content goes here.
        {% endblock %}
    
  • Вы можете использовать включения, где это необходимо, но предпочитайте расширения, где это возможно. Включение обсуждалось для включения в язык шаблонов.

Заполнение контекста:

Теперь у вас есть много шаблонов с заполнителями, которые необходимо заменить реальными значениями контекста.

  • Передайте RequestContext, который должен содержать много стандартных требований к шаблону.
  • Для значений, которые вам нужны в каждом шаблоне, напишите процессор контекста шаблона.
  • Те контексты, которые вам нужны в этом шаблоне, вы заполняете в представлении.

Использование нескольких просмотров приложения:

  • Большинство приложений, написанных для повторного использования, будут включать template_name в качестве стандартного параметра наряду с extra_context. Вам нужно будет вызвать эти представления с этими параметрами.
  • Некоторые приложения стараются изо всех сил создавать лениво оцениваемый ответ (например, TemplateResponse), чтобы вы могли захватывать контекст, который они заполняют, на ваш взгляд.

Многоразовые приложения Django:

Ты что, шутишь? Они по всему интернету!

http://github.com/search?q=django&type=Everything

http://bitbucket.org/repo/all/?name=django

http://code.google.com/hosting/search?q=django&projectsearch=Search+projects

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