Функция exec() в python не выполняется в django
Надеюсь, у вас все хорошо. Я хочу использовать функцию exec() в django для выполнения моих строк, выбранных из базы данных. Код, который я написал, работает только в python script, но не работает в Django views. Ниже приведен мой код в скрипте python, который я запускаю в блокноте.
ticker = 'AAPL'
title = 'f"hey {ticker} is a really doing good."'
exec('title = ' + title)
print(title)
Но тот же код в Django views не выполняется. Ниже приведен код в файле views.py.
ticker = 'AAPL'
title = queryset.title #The title here is The {ticker} is not doing good.
exec('title = ' + title)
Он не дает ответа на запись, просто возвращает первый заголовок, как показано ниже.
У {ticker} не все в порядке. Это тело {тикера}.
Если у кого-то есть решение, пожалуйста, помогите мне разобраться в этом.
Используйте str.format(…) [Python-doc] для форматирования строк:
ticker = 'AAPL'
title = queryset.title.format(ticker=ticker)
до не используйте exec или eval: это может привести к нежелательным побочным эффектам и поэтому небезопасно.
Я нашел ответ. Если вы хотите выполнить одну переменную, то используйте верхний код, который выглядит так:
ticker = 'AAPL'
title = queryset.title.format(ticker=ticker)
Если вы хотите выполнить целый словарь с большим количеством значений. Тогда ** является хорошим вариантом. Например
dictionary = {'ticker': 'Example', 'website': 'example.com'}
queryset.title.format(**dictionary)