Есть ли способ заставить что-то выполнить для каждого представления в Django? - PullRequest
1 голос
/ 28 августа 2011

Я новичок в Django и пришел из Rails, поэтому я могу объяснить мои странные вопросы ниже:

У меня есть основной макет с боковой панелью, на которой перечислены последние обновления сайта.Этот основной макет используется для каждой страницы в моем веб-приложении, поэтому каждый созданный шаблон расширяет файл main.html.

. В разделе последних обновлений я просто хочу получать последние 5 обновлений от публикаций в веб-приложении каждый раз.время отображения страницы.Я думал о том, чтобы заставить боковую панель сделать это с помощью вызова ajax после загрузки страницы, но я подумал, что это может быть не лучшим моим вариантом.

Я также подумал о создании тега для этого для меня, а затем просто отег внутри main.html.Это достаточно просто, но я должен был бы написать много HTML внутри кода тега, что кажется немного раздражающим (много строк, добавляющих и тому подобное, если я не ошибаюсь, и есть ли лучший способ?)

Я читал о процессорах контекста .Казалось, это именно то, что я хотел, но, похоже, это может вызвать другую проблему, где я должен передать context_instance для каждого render_to_response?Это похоже на повторение кода, и я стараюсь избегать этого, если это возможно.Есть ли способ сделать так, чтобы render_to_response всегда принимал объект RequestContext, не всегда указывая его?

Есть ли другие способы добиться выполнения кода для каждого представления и устранить необходимость всегда передавать данные вПосмотреть?

Ответы [ 4 ]

4 голосов
/ 28 августа 2011

Django 1.3 добавил ярлык render, который совпадает с render_to_response, но с автоматически используемым RequestContext.

3 голосов
/ 28 августа 2011

Шаблоны - подходящее место для этого: вариант с пользовательским тегом и наследованием шаблона прост и удобен.Чтобы избежать добавления строки, используйте мини-шаблон только для вашего тега: он называется теги включения .

1 голос
/ 28 августа 2011

Вы можете использовать direct_to_template вместо render_to_response.

1 голос
/ 28 августа 2011

Я бы определенно пошел на вызов Ajax, это так же просто, как создать небольшое представление, которое запрашивает модель для 5 последних сообщений, сериализует их в данные json или xml и возвращает их в ваш объект HttpRequest.

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