Джанго: Как мне подготовиться? - PullRequest
0 голосов
/ 18 мая 2010

Я изучаю Django и у меня возникла именно эта проблема.

Как мне добавить <span class="label">Note:</span> внутрь {{article.content_html|safe}}?

Содержимое {{article.content_html|safe}} - это блоки абзаца, и я просто хочу добавить <span class="label">Note:</span> в самый первый абзац.

Спасибо!

Ответы [ 4 ]

1 голос
/ 18 мая 2010

Звучит так, как будто вы хотите написать пользовательский тег , который использует BeautifulSoup для анализа HTML и вставки фрагмента.

0 голосов
/ 23 апреля 2012

jQuery является самым простым и простым в реализации. Вам нужна только одна строка с предварительным вызовом ( документация ):

$('p:first').prepend('<span class="label">Note:</span>');

Объяснение: 'p: first' - это jQuery селектор аналогично ': first-child' CSS селектор . Он выберет первый абзац, а вызов prepend вставит интервал в выбранный абзац.

Примечание: Если на странице перед вашим контентом есть абзац, возможно, вам придется заключить его в div:

<div id='ilovesmybbq'>{{article.content_html|safe}}</div>

Тогда вызов jQuery будет:

$('#ilovesmybbq p:first').prepend('<span class="label">Note:</span>');
0 голосов
/ 18 мая 2010

Альтернативным подходом может быть сделать это с помощью JavaScript. В jQuery это будет выглядеть примерно так:

var first_p_text = $("p:first").text()
$("p:first").html("<span class="label">Note:</span>" + first_p_text)

Обратите внимание, что если в вашем первом p есть другие элементы, $ ("p: first"). Text () также будет извлекать текст из них - см. http://api.jquery.com/text/

Конечно, это зависит от достойной поддержки JavaScript в клиенте.

0 голосов
/ 18 мая 2010

Легкого пути нет. Вы можете легко подготовиться ко всем статьям.

<span class="label">Note:</span>
{{article.content_html|safe}}

Если это не поможет вам изменить структуру article.content_html, чтобы вы могли манипулировать блоками из шаблонов django, чтобы он выглядел примерно так

{{article.content_header}}
<span class="label">Note:</span>
{{article.content_html}}

Если это решение вам неосуществимо, и вам абсолютно необходимо проанализировать и изменить содержимое article.content_html, напишите собственный настраиваемый фильтр, который это делает. Документацию по написанию пользовательских фильтров вы можете найти здесь http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters.

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