Django, как отправить электронное письмо со ссылкой пользователя?

Привет, я новичок в Django, просто изучаю документацию. Я только что использовал django, чтобы отправить электронное письмо https://docs.djangoproject.com/en/2.1/topics/email/. Я хочу отправить электронное письмо в сообщении о присоединении, хочу отправить URL-адрес с идентификатором водителя для бронирования автомобиля. как мне отправить URL с его идентификатором. например, у меня есть 4 пользователя на моем сайте. сотрудник нашей компании нажимает на ссылку, отправляет электронное письмо зарегистрированному пользователю. после нажатия на кнопку «Отправить электронное письмо», как мне получить идентификатор водителя в моем URL-адресе и отправить ему, как в сообщении о присоединении, ссылку, где его идентификатор находится в URL-адресе.

Views.py

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 = driver_email
            if to_email is not None:
                join_message = """Please hit the link and book a car "url with his id " """
                send_mail(subject=subject, from_email=from_email, recipient_list=[to_email], message=join_message,
                          fail_silently=False)
                print("email sent")
        except Driver.DoesNotExist:
            print("Driver doesn't exists")
        return HttpResponseRedirect('/mega-admin/rentacar/carapp-manager/')

URL.py

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

person Abu bakr    schedule 04.09.2018    source источник
comment
Почему бы не сделать это с помощью шаблонизатора Django?   -  person Willem Van Onsem    schedule 04.09.2018
comment
как мне его визуализировать?   -  person Abu bakr    schedule 04.09.2018
comment
Кроме того, может быть лучше указать путь name и использовать именованные параметры. Сейчас мне непонятно, что делают два \d+.   -  person Willem Van Onsem    schedule 04.09.2018
comment
@WillemVanOnsem Теперь я изменил свой URL-адрес. Я просто хочу отправить электронное письмо водителю с его идентификатором после нажатия на ссылку. его идентификатор будет в нем   -  person Abu bakr    schedule 04.09.2018
comment
render() принимает 2 позиционных аргумента, но было задано 3   -  person Abu bakr    schedule 04.09.2018
comment
@WillemVanOnsem, ваш ответ не отображается?   -  person Abu bakr    schedule 04.09.2018


Ответы (1)


Вы можете попробовать так:

if request.is_secure():
   protocol = 'https://'
else:
   protocol = 'http://'

host = request.get_host()

url = protocol + host + reverse('url_name', kwargs={user_id: user_id})
  • kwargs может быть нулевым, если нет аргументов с шаблоном URL.

Затем соедините URL-адрес с телом вашего сообщения в send email().

person Md. Zayed Hassan    schedule 27.03.2021