Джанго, как получить request.get_host? - PullRequest
0 голосов
/ 24 сентября 2018

Спасибо, что прочитали мою проблему. Я не получаю запрос на получение хоста. Я отправляю электронное письмо водителям, которые зарегистрировались в моем приложении. Я отправляю ссылку на бронирование с их идентификатором в URL.Проблема в том, что я не получаю хост с ним.Например, после перехода по ссылке я хочу, чтобы он перенаправил на страницу, где он может видеть автомобиль.

Вывод по почте После отправки электронного письма:

Пожалуйста,нажмите на ссылку и закажите автомобиль / водители / 2 /

, но я хочу правильную ссылку, чтобы отправить его по почте

, например,

http://127.0.0.1:8000/drivers/1/

Views.Py

from django.template import Context, Template as mailt

@csrf_exempt
def rentacar_carapp_approve(request):
    if request.POST:
        try:
            args['driver'] = driver = Driver.objects.get(id=request.POST.get('driver_id'))
            subject = "Please Register Your Car"
            from_email = settings.EMAIL_HOST_USER
            to_email = 'bakrshk@gmail.com'
            if to_email is not None:
                template = mailt("""Please hit the link and book a car {{ request.get_host }}{% url 'detail' driver_id=driver_id %}""")
                ctx = Context({'driver_id': driver.id})
                join_message = template.render(ctx)
                send_mail(subject=subject, from_email=from_email, recipient_list=[to_email], message=join_message,
                          fail_silently=False)
                print("email sent")
                print(request.get_host)
        except Driver.DoesNotExist:
            print("Driver doesn't exists")

Url.py

url(r'^drivers/(?P<driver_id>\d+)/$', rent_views.detail, name='detail'),

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Лучший способ - создать URL в вашем представлении, используя build_absolute_uri метод HttpRequest, поскольку при этом также будет добавлен текущий протокол (https или http):

url = request.build_absolute_uri(reverse('detail', kwargs={'driver_id': driver.id}))
ctx = Context({'url': url})
template = mailt("""Please hit the link and book a car {{ url }}""")
join_message = template.render(ctx)

Это должно привести кhttp://localhost:8000/drivers/2, отображаемое в вашем сообщении электронной почты.

0 голосов
/ 24 сентября 2018

Просто создайте URL-адрес вот так и попробуйте.

request.get_host +'/driver/'+driver_id
...