Как получить переменные между фигурными скобками в шаблоне django в представлениях django?
У меня есть файл шаблона django. Теперь я хочу получить весь список переменных, которые находятся между фигурными скобками. Я думаю, что это возможно с помощью регулярных выражений. И я читал о регулярных выражениях. Но там нет ни одной функции, которую я нашел полезной.
фрагмент кода шаблона:
<tr><td>
Dear Candidate,<br/>
Welcome to Creative Talent Management!<br/>
We have created an account for you. Here are your details:<br/>
Name:{{name}}<br/>
Email:{{email}}<br/>
Organization:{{organization}}<br/>
Password:{{password}}<br/>
</td></tr>
Я хочу получить имя, email, организацию, пароль в моей функции python.
Прямо сейчас я пытаюсь открыть шаблон, но получаю ошибку.
@receiver(post_save,sender=EmailTemplate)
def html_file_variables_reader(sender, instance, created, **kwargs):
if created:
temp_path = str(instance.html_template)
temp_path = temp_path.split("templates/emails/")[1]
print("temp_path :",temp_path)
html_file = codecs.open(BASE_DIR / temp_path, 'r')
print("html AAGAI ",html_file.read())
else:
pass
FileNotFoundError: [Errno 2] No such file or directory: '/home/ahmed/bitbucket/develop/backend/email_test_template_gBC7WVP.html
Файл, который завершен правильно.
Это как бы от обратного к прямому. Обычно вы передаете все переменные, которые могут быть использованы из вашего представления, в шаблон рендеринга через контекст. Не имеет значения, если одна или несколько переменных контекста не используются шаблоном. Конечно, у вас должен быть тест, который отлавливает ошибки в написании имен переменных ({{usernmae}} будет отображаться как нулевая строка без ошибок ).
Для проверки шаблона вы можете просто grep '{{' some_template.html, или написать что-нибудь в Python, чтобы получить (скажем) отсортированный по алфавиту список имен переменных. Но это помощь в разработке программы, а не часть кода сервера Django.
Если бы вы действительно хотели, вы могли бы просто открыть файл шаблона и написать аналогичный Python-код как часть вашего представления. Но зачем?