Django: написание шаблона тега, который удаляет контент за его пределами - PullRequest
0 голосов
/ 20 сентября 2011

Я пишу сайт, и некоторые страницы запрашиваются либо с помощью Ajax, либо с помощью обычного запроса. Конечно, при запросе с Ajax, я хотел бы сделать немного другой шаблон. Я пробовал несколько методов (фрагмент кода render_block, который был отличной идеей, но с ошибками, используя {% include%} для разделения шаблонов при факторизации кода, используя {% ifnot request.is_ajax%} для визуализации содержимого, такого как панель инструментов или меню , только если не Аякс). Поэтому я подумал, что было бы здорово сделать так:

<div> A menu that should not appear with Ajax </div>
{% ajax %}
<div> The Ajax part </div>
{% endajax %}
<div> A footer that should not appear with Ajax </div>

Затем возвращается нормальный запрос:

<div> A menu that should not appear with Ajax </div>
<div> The Ajax part </div>
<div> A footer that should not appear with Ajax </div>

Ajax-запрос:

<div> The Ajax part </div>

Тем не менее, сейчас я не знаю, с чего начать ... Я уже писал шаблоны тегов, но никогда не приходилось делать что-то настолько сложное! Это вообще возможно?

1 Ответ

0 голосов
/ 20 сентября 2011

Это звучит как очень запутанный способ сделать это - я бы определенно придерживался:

{% if not request.is_ajax %}
<div> A menu that should not appear with Ajax </div>
{% endif %}
<div> The Ajax part </div>
{% if not request.is_ajax %}
<div> A footer that should not appear with Ajax </div>
{% endif %}

В качестве альтернативы, выделите ваши шаблоны так, чтобы материал, который вы хотите визуализировать оба раза, находился в одном шаблоне (назовем это my_ajax_template.html):

<div> The Ajax part </div>

При ответе на запросы, поступающие из AJAX, ваш код представления может просто отображать этот шаблон, но при ответе на «нормальные» запросы вы можете отобразить шаблон, который выглядит следующим образом:

<div> A menu that should not appear with Ajax </div>
{% include 'my_ajax_template.html' %}
<div> A footer that should not appear with Ajax </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...