Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как в шаблоне объявить безопасными избранные теги [RSS Feed]

#1 Авг. 8, 2014 10:21:10

evgenyivanov
От:
Зарегистрирован: 2011-09-27
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в шаблоне объявить безопасными избранные теги

Такая проблема. Пишу блог. В поле модели храню html. Понятно, что в шаблоне поставить фильтр safe нельзя, тогда каждый пользователь скрипт сможет ставить. Решил safe не использовать, а сделать свой фильтр.

from django import template
register = template.Library()
def my_safe(value):
    s = str(value)
    result = ""
    while True:
        position = s.find("<img")
        return position
        if position == -1:
            result = result +s
            break
        result = result+s[0:position-1]
        s = "<img "+s[position+7:len(s)+1]
        s.replace('&quot;','"')
        s.replace('&quot; &gt;','"')
    return result
    
register.filter('my_safe', my_safe)
Как выяснилось у меня в мой фильтр значение попадает еще без ескуп-символов. пожалуйста, подскажите, как можно решить эту проблему средствами джанго, не используя джава-скрипт



Офлайн

#2 Авг. 8, 2014 10:57:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как в шаблоне объявить безопасными избранные теги

Для этого придуманы различные форматы разметки: BBCOde, Markdown, Wiki и тд.
Вот их и юзайте, сиё безопасно.



Офлайн

#3 Авг. 8, 2014 11:21:01

evgenyivanov
От:
Зарегистрирован: 2011-09-27
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в шаблоне объявить безопасными избранные теги

Всё равно вопрос остался прежний. Допустим, я использую bbcode. Я пишу свой фильтр для разбора или беру готовый. https://code.djangoproject.com/wiki/CookBookTemplateFilterBBCode
Фильтр разбора отрабатывае, преобразуя bbcode обратно в html, но его тут же накрывает эскейп

Вот так у меня преобразовалась строка

[img]http://anticache.img0.joyreactor.cc/pics/comment/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82-%D1%82%D0%BE%D0%BB%D1%81%D1%82%D1%8B%D0%B9-%D0%B4%D0%B2%D0%B5%D1%80%D1%8C-365023.jpeg[/img]

&lt;img src=&quot;http://anticache.img0.joyreactor.cc/pics/comment/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82-%D1%82%D0%BE%D0%BB%D1%81%D1%82%D1%8B%D0%B9-%D0%B4%D0%B2%D0%B5%D1%80%D1%8C-365023.jpeg&quot;&gt;



Офлайн

#4 Авг. 10, 2014 12:35:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как в шаблоне объявить безопасными избранные теги

А что Вам мешает в этом случае использовать safe? Вы же получаете гарантированно безопасный код.



Офлайн

  • Начало
  • » Django
  • » Как в шаблоне объявить безопасными избранные теги [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version