Obecnie dynamiczną treść obsługuję tak:

t = Template(user_type.invitation_email_template)
c = Context({
    'user_name': user.name
    'company_name': company.name,
})
email_message = t.render(c)
message = render_to_string("users/email/email_create_profile.html", {
    'email_content': email_message,
    'domain': domain
})

user_type.invitation_email_template to models.TextField()

W tym polu trzymam np.

Hello {{ user_name }}!

{{ company_name }} has invited you to use...

Jako że te tagi są wymagane robię walidację i sprawdzam czy są zawarte w treści przed zapisaniem.

Problem: potrzebuję dodać możliwość wstawiania buttona z linkiem i nie wiem jak to ogarnąć. W moich statycznych szablonach email mam taki kod który wyświetla button:

<table role="presentation" border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
    <tbody>
        <tr>
            <td align="left">
            <table role="presentation" border="0" cellpadding="0" cellspacing="0">
                <tbody>
                <tr>
                    <td> <a href="https://google.com" target="_blank">Go to Google</a> </td>
                </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>

Jaki będzie najlepszy sposób aby dać możliwość wstawiania takich buttonów przez usera, czyli poprzez edycję invitation_email_template = models.TextField()?