Чтобы передать request
в контекст шаблона, вы можете явно включить его в контекст:
template = Template("""Please hit the link and book a car {{ request.get_host }}{% url 'detail' driver_id=driver_id %}""")
ctx = Context({'driver_id': driver.id, 'request': request})
join_message = template.render(ctx, request)
Или вы можете использовать RequestContext
(при условии, что у вас включен обработчик контекста запроса.
template = Template("""Please hit the link and book a car {{ request.get_host }}{% url 'detail' driver_id=driver_id %}""")
ctx = RequestContext(request, {'driver_id': driver.id})
join_message = template.render(ctx, request)
Обратите внимание, что создание экземпляров шаблонов из строк необычно (например, template = Template("""...""")
). Обычно вы сохраняете шаблон в файл в каталоге шаблонов (например, car_approve.email
), а затем используете ярлык render_to_string
для визуализации шаблона. Шаблон render_to_string
принимает request
в качестве аргумента.
from django.template.loader import render_to_string
context = {'driver_id': driver.id}
join_message = render_to_string('car_approve.email', context, request=request)