Как получить полный url в обратной функции
Прошу помощи в решении следующей проблемы.
В models.py (я использую приложение django-payments)
class Payment(BasePayment):
def get_failure_url(self):
return "http://127.0.0.1:8000/collaborate/donate/payment-failure"
return reverse('payment_failure')
def get_success_url(self):
return "http://127.0.0.1:8000/collaborate/donate/payment-success"
В urls.py
urlpatterns = [
path("donate/payment-failure/",views.payment_failure, name='payment_failure'),
В views.py
def payment_failure(request):
template_name = 'collaborate/payment_failure.html'
return render(request, template_name)
В models.py я переопределяю метод "get_failure_url", чтобы перенаправить на url ошибки, но код примера (django-payments) имеет жестко закодированный url (http://127.0.0.1:8000/collaborate/donate/payment-failure). В моем случае я хочу использовать другое выражение, вызывающее View с именем 'payment_failure', но я не знаю, как получить полный url. Я пробовал использовать "return reverse('payment_failure')", но это не работает, потому что путь - "https://sis-t.redsys.es:25443/", а не url моего web.
спасибо,
Способ сделать это - метод request.build_absolute_uri, который поставляется с request.
return self.request.build_absolute_uri(reverse('payment_failure'))
# or
return self.request.build_absolute_uri('donate/payment-failure/')