как отобразить переменную шаблона 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

4 ответов
использовать тег: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 tag:
обратите внимание, что переменные, включенные в теге прежде не сбежал. Это связано с тем, что теги шаблонов не избегают их содержимого. Любой код HTML или Javascript, содержащийся в печатной переменной, будет отображаться как есть, что потенциально может привести к проблемам безопасности. Если вам нужно бежать переменные в теге прежде, вы должны сделать это явно
{% firstof variable %}