Реализуйте f-строку как по волшебству, чтобы прокачать функцию format_html() в Django.Python

Программы на Python
Anonymous
Реализуйте f-строку как по волшебству, чтобы прокачать функцию format_html() в Django.

Сообщение Anonymous »

Я хотел бы реализовать format_html() в Django.
Он уже работает довольно хорошо, но моя IDE (PyCharm) считает, что переменные не используются, и окрашивает их в светло-серый цвет:
Изображение

AFAIK f-строки используют магическое переписывание.
Есть ли способ реализовать это, чтобы IDE знала, что переменные используются?
Связано: реализация синтаксиса, подобного f-строке, с поддержкой Django SafeString
Вот моя текущая реализация:

Код: Выделить всё

def h(html):
"""
Django's format_html() on steroids
"""
def replacer(match):
call_frame = sys._getframe(3)
return conditional_escape(
eval(match.group(1), call_frame.f_globals, call_frame.f_locals))
return mark_safe(re.sub(r'{(.*?)}', replacer, html))
Кто-то выразил обеспокоенность по поводу безопасности: я не планирую создавать CMS, где пользователь сможет редактировать эти шаблоны. Эти h-строки шаблонов предназначены только для того, чтобы у разработчиков был удобный способ создания HTML.
Прежде чем писать ответ, убедитесь, что вы знакомы с магией Conditional_escape()

Подробнее здесь: https://stackoverflow.com/questions/668 ... ormat-html

Вернуться в «Python»