{{domain}} становится example.com на локальном компьютере - PullRequest
2 голосов
/ 12 июля 2020

Я учусь отправлять письма с django, но я столкнулся с этой проблемой, потому что он возвращает http://example.com/ вместо http://127.0.0.1:8000/

Код, который отправляет почту и генерирует ссылку, следующий (Я добавил комментарии к двум строкам, которые, как я подозреваю, являются причиной):

views.py
# Send activation E-mail
        current_site = get_current_site(self.request)  # Either this line
        mail_subject = 'Activate your Penge account.'
        message = render_to_string('emails/activation-mail.html', {
            'user': user,
            'domain': current_site.domain,  # or maybe this line
            'uid': urlsafe_base64_encode(force_bytes(user.pk)),
            'token': default_token_generator.make_token(user),
        })
        to_email = form.cleaned_data.get('email')
        email = EmailMessage(
            mail_subject, message, to=[to_email]
        )
        email.send()
        return HttpResponse('Please confirm your email address')
activation-mail.html

{% autoescape off %}
Hi {{ user.username }},

Please click on the link to confirm your registration,
http://{{ domain }}{% url 'accounts:activate' uidb64=uid token=token %}

If you think, it's not you, then please ignore this email.
{% endautoescape %}

Как мне исправить это, поскольку функция должна получить домен с использованием. В идеале я мог бы определить это в settings.py, когда я развертываю свое приложение.

Заранее спасибо.

ИЗМЕНИТЬ! Добавлен шаблон письма

1 Ответ

1 голос
/ 12 июля 2020

Думаю, вы настроили структуру django сайтов . Поэтому вместо get_current_site используйте request.get_host()

'domain': request.get_host(), 

Или вы можете изменить домен своего сайта с django панели администратора на 127.0.0.1 с example.com и get_current_site(request).domain будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...