Как визуализировать переменную шаблона django как html?

То, что я хочу, похоже на переполнение стека. Пользователь может форматировать текст в формате HTML, и страница должна отображаться точно так же,

Я использую wmd.js для хранения отформатированного ввода. У меня есть переменная контекста {{variable}} со строковым значением "<p>something</p>". Когда я создаю шаблон,

{{variable}} outputs <p>something</p>

and {{variable|safe}} also output <p>something</p>

Он показывает тег html как текст на странице. Как отобразить тег HTML в {{variable}}, но не показывать их как обычный текст.

шаблон

    <div id='thread_answer_content' >
        {% for answer in question.answer_set.all %}
            {{answer.answerbody|safe}}
        {% endfor %}
    </div>

вид

def detail(request,question_id):
q = get_object_or_404(Question,pk=question_id)
return render_to_response('CODE/detail.html',{'question':q},
        context_instance = RequestContext(request)
    )

вот страница администратора django вопроса, я использую sqlite3, кстати enter image description here

Ответ 2

Вы можете использовать escape для рендеринга, вместо safe.

{{ variable|escape }}

Ответ 3

Для простого форматирования HTML используйте <p>{{something}}</p>. И способ Javascript,

<script type="text/javascript">
    var variable  =  "<p>{{something}}</p>";
    document.write(variable);
</script>

Если этот {{something}} сам содержит теги HTML, то сам {{something|safe}} должен работать, если у вас нет {% autoescape on %}. Для большей фильтрации и форматирования см. Встроенные теги и фильтры шаблонов.

Ответ 4

Я думаю, что для этого нужно использовать firstof тег:

Обратите внимание, что переменные, включенные в тег firstof, не будут экранированы. Это связано с тем, что теги шаблонов не избегают их содержимого. Любой HTML или Javascript-код, содержащийся в печатной переменной, будет отображаться как есть, что потенциально может привести к проблемам безопасности. Если вам нужно избежать переменных в первом теге, вы должны сделать это явно

{% firstof variable %}