Django: Получение абсолютного URL без доступа к объекту запроса

У меня есть модель, подобная показанной ниже. При создании экземпляра я хочу отправить электронное письмо заинтересованной стороне:

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='admin@example.com',
            recipient_list=[instance.notify_email,]
        )
signals.post_save.connect(new_stop_created, sender=TrainStop)

Однако обратный вызов возвращает только часть пути URL-адреса. Пример: / stop / 9 / status / . Мне нужен полный URL-адрес, например http://example.com/stops/9/status/ . Как мне получить имя хоста и порт (для тестовых экземпляров, которые не используют порт 80) текущего веб-сайта?

Моя первоначальная мысль заключалась в том, чтобы сделать это доступным через переменную в settings.py к которому я мог получить доступ по мере необходимости. Однако подумал, что у кого-то может быть более здравое предложение.

17
задан Belmin Fernandez 10 November 2010 в 23:56
поделиться