Django: представление не работает, когда я перенаправляю на представление, оно не может загрузить страницу?
Я пытаюсь перенаправить на представление с обратным вызовом в django, но кажется, что это не работает, urls.py выглядит нормально, но он продолжает терпеть неудачу.
У меня есть представление investmentDetail
, которое получает purchased_package_id
, теперь идентификатор купленного пакета - это то, что я использую для отслеживания конкретного платежа, который обрабатывается, и я передал purchased_package_id
в качестве параметра моей функции, так что я могу сделать что-то с этим в урлах, теле представления и т.д., но кажется, что purchased_package_id
не работает, как ожидалось, и я не могу определить, что сломалось?
views.py
def investmentDetail(request, slug):
investment = InvestmentPackage.objects.get(active=True, slug=slug)
if request.method == "POST":
purchased_package = PurchasedPackage.objects.create(user=request.user, investment_package=investment )
purchased_package_id = purchased_package.id
name = request.POST.get("name")
email = request.POST.get("email")
amount = request.POST.get("amount")
return redirect(str(process_payment(name,email,amount, investment, purchased_package_id)))
else:
pass
context = {
"investment":investment,
}
return render(request, "core/investment-detail.html", context)
def process_payment(name,email,amount, investment, purchased_package_id):
auth_token= settings.FLUTTER_SECRET_KEY
hed = {'Authorization': 'Bearer ' + auth_token}
data = {
"tx_ref":''+str(math.floor(1000000 + random.random()*9000000)),
"amount":amount,
"currency":"NGN",
"redirect_url":f"http://localhost:8000/callback/{purchased_package_id}/",
"payment_options":"card",
"meta":{
"consumer_id":23,
"consumer_mac":"92a3-912ba-1192a"
},
"customer":{
"email":email,
"name":name
},
"customizations":{
"title":"Investment Platform",
"description":" Limitless Learning For Everyone",
"logo":"https://getbootstrap.com/docs/4.0/assets/brand/bootstrap-solid.svg"
}
}
url = ' https://api.flutterwave.com/v3/payments'
response = requests.post(url, json=data, headers=hed)
response=response.json()
link=response['data']['link']
return link
@login_required
@require_http_methods(['GET', 'POST'])
def payment_response(request, purchased_package_id=None):
status=request.GET.get('status', None)
tx_ref=request.GET.get('tx_ref', None)
id=request.GET.get('id', None)
print(tx_ref)
print(status)
print(id)
if status == "successful":
if purchased_package_id:
# user_course = UserCourse.objects.filter(id=user_course_id).update(paid=True)
package_dict = PurchasedPackage.objects.filter(id=purchased_package_id)
package_dict.update(paid=True)
user_payment = package_dict.first()
user_payment.save()
return render(request, "core/payment-success.html")
else:
return render(request, "core/payment-failed.html")
if status == "cancelled":
return render(request, "core/payment-failed.html")
urls.py
path('callback/<int:purchased_package_id>/', payment_response, name='payment_response')