Форум сайта python.su
0
И снова здравствуйте. У меня очередной кризис жанра и соответственно вопрос. Сам я использую Google App Engine, но шаблоны в нем Django'вские. Пока использовались шаблоны от версии 0.96 все было нормально, но с переходом на версию 1.2 возникли вопросы. А именно - я использую унифицированный шаблон для отображения данных. Фактически каждая статья состоит из заголовка, тела статьи и даты ее публикации. Шаблон соответственно простенький
{% extends "index.html" %}
{% block content %}
<h2>{{ section_title }}</h2>
<p>{{ body }}</p>
<p>{{ publication }}</p>
{% endblock %}Отредактировано (Июнь 19, 2011 11:01:42)
Офлайн
2
в чем проблема-то? {{ body|safe }} написать вместо {{ body}} проблема?
Офлайн
0
appetitoНе проблема. И я об этом упоминал. Но, если фильтрующий режим предусмотрен в шаблоне как режим по-умолчанию, то использование safe - это уже своего рода хак, пусть и предусмотренный разработчиком фреймворка, поскольку нарушается та логика шаблона которую заложили разработчики. Я пытаюсь понять, как авторы Джанги представляют себе использование шаблонов на динамических страницах с установками по умолчанию. Не думаю, что журналисты, ради которых Джанго и делалась, занимаются помимо публикации материала, еще и созданием шаблонов для каждой своей статьи. Т.е. должно быть какое-то средство позволяющее этот материал отформатировать.
в чем проблема-то? {{ body|safe }} написать вместо {{ body}} проблема?
Офлайн
41
бред пишешь, safe сделали для защиты от xss и тп, короче для безопасности.
Защита от дурака.
С чего вы взяли что джанга для журналистов, тоже не ясно. Её уже давно пилят люди, которые далеки от разработки чисто новостников и журналистики в целом.
Офлайн
0
slav0nicНу почему сразу бред? Просто высказываю мысль. То что поведение шаблонов изменили для протиовдействия xss мне известно. Но не логично как-то. Подобную защиту ИМХО надо ставить на входящие данные. Т.е. получается, что, в моем случае, надо делать {{ body|safe }}, но при этом еще и проверять данные наполняющие body, экраинрование то отключено. Вот именно это отсутствие централизованности меня и смущает. Если данные при записи в БД проверялись, то зачем их еще и в представлении шерстить? А если не проверять перед записью, то как тогда отображать одинаковые по классу ( в данном случае статьи), но разные по разметке данные?
бред пишешь, safe сделали для защиты от xss и тп, короче для безопасности.
Защита от дурака.
slav0nicПро журналистов я вспомнил, т.к. это самый подходящий пример.
С чего вы взяли что джанга для журналистов, тоже не ясно. Её уже давно пилят люди, которые далеки от разработки чисто новостников и журналистики в целом.
Отредактировано (Июнь 20, 2011 00:18:06)
Офлайн
41
какой же вы упрямый) это стандартная методика когда что-то запрещается. Представьте, что вы забыли что-то заескейпить - это повлияет на безопасность. А при текущем подходе - нет.
Хотите делать в коде - попробуйте mark_safe() или используйте {% autoescape off %} в шаблоне, но я б за такое руки отрывал)
Офлайн
41
А если не проверять перед записью, то как тогда отображать одинаковые по классу ( в данном случае статьи), но разные по разметке данные?делать как во всех номральных система, храня флаг указывающий разметку …
Офлайн
0
slav0nicМожно об этом подробнее?
делать как во всех номральных система, храня флаг указывающий разметку …
Офлайн
41
эм ну я обычно делаю 2 поля
грубо говоря body и body_rendered (ну или body_html) + 1 поле флаг, где хранится разметка, запись оригинальной записи идёт в body и в def save() рендерится согласно выбранной разметки в body_rendered в виде html. Ну и при выводе информации информация берётся с body_rendered.
Ты бы что ли почитал код блогов, форумов и тп. Это классический подход.
Офлайн
0
slav0nicФу-у-ух! Что-то я совсем в ступор впал. Дай, пожалуйста, ссылки на примеры.
эм ну я обычно делаю 2 поля
грубо говоря body и body_rendered (ну или body_html) + 1 поле флаг, где хранится разметка, запись оригинальной записи идёт в body и в def save() рендерится согласно выбранной разметки в body_rendered в виде html. Ну и при выводе информации информация берётся с body_rendered.
Ты бы что ли почитал код блогов, форумов и тп. Это классический подход.
Офлайн