У меня есть модель, подобная приведенной ниже. Когда экземпляр создается, я хочу отправить электронное письмо заинтересованному лицу:
class TrainStop(models.Model):
name = models.CharField(max_length=32)
notify_email = models.EmailField(null=True, blank=True)
def new_stop_created(sender, instance, created, *args, **kwargs):
# Only for new stops
if not created or instance.id is None: return
# Send the status link
if instance.notify_email:
send_mail(
subject='Stop submitted: %s' % instance.name,
message='Check status: %s' % reverse('stop_status', kwargs={'status_id':str(instance.id),}),
from_email='[email protected]',
recipient_list=[instance.notify_email,]
)
signals.post_save.connect(new_stop_created, sender=TrainStop)
Однако вызов reverse
возвращает только путь к URL-адресу. Пример: /stops/9/status/
. Мне нужен полный URL, например http://example.com/stops/9/status/
. Как я могу получить имя хоста и порт (для тестовых экземпляров, которые не используют порт 80) текущего веб-сайта?
Моя первоначальная мысль заключалась в том, чтобы сделать это доступным через переменную в settings.py
, которую я мог бы затем получить по мере необходимости. Однако, подумал, что у кого-то может быть более надежное предложение.