Ответ 1
использовать тег: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#autoescape
{% autoescape off %}{{ variable }}{% endautoescape %}
То, что я хочу, похоже на переполнение стека. Пользователь может форматировать текст в формате 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, кстати
использовать тег: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#autoescape
{% autoescape off %}{{ variable }}{% endautoescape %}
Вы можете использовать escape
для рендеринга, вместо safe
.
{{ variable|escape }}
Для простого форматирования HTML используйте <p>{{something}}</p>
. И способ Javascript,
<script type="text/javascript">
var variable = "<p>{{something}}</p>";
document.write(variable);
</script>
Если этот {{something}}
сам содержит теги HTML, то сам {{something|safe}}
должен работать, если у вас нет {% autoescape on %}
. Для большей фильтрации и форматирования см. Встроенные теги и фильтры шаблонов.
Я думаю, что для этого нужно использовать firstof
тег:
Обратите внимание, что переменные, включенные в тег firstof, не будут экранированы. Это связано с тем, что теги шаблонов не избегают их содержимого. Любой HTML или Javascript-код, содержащийся в печатной переменной, будет отображаться как есть, что потенциально может привести к проблемам безопасности. Если вам нужно избежать переменных в первом теге, вы должны сделать это явно
{% firstof variable %}