Я пытаюсь создать сайт электронной коммерции, где пользователь отправляет заказ и перенаправляется на интерфейс оплаты (Paytm, Индия).
Однако я получаю эту ошибку:
Traceback:
File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/utils/deprecation.py" in __call__
96. response = self.process_response(request, response)
File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/middleware/clickjacking.py" in process_response
26. if response.get('X-Frame-Options') is not None:
Exception Type: AttributeError at /orders/create/
Exception Value: 'tuple' object has no attribute 'get'
Если я добавляю «условие else» точно под if if.is_valid (), я получаю эту ошибку.
Traceback:
File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/Users/shyambalakrishnan/Dev/trydjango/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
126. "returned None instead." % (callback.__module__, view_name)
Exception Type: ValueError at /orders/create/
Exception Value: The view orders.views.order_create didn't return an HttpResponse object. It returned None instead.
Хотя в обоих сценариях сервер работает без ошибок.
views.py (в моем приложении заказов)
from django.shortcuts import render
from .models import OrderItem , Order
from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_exempt
from .forms import OrderCreateForm
from cart.cart import Cart
from payTm import Checksum
from django.http import HttpResponse
MERCHANT_KEY = 'my_merchant_key';
@csrf_exempt
def handlerequest(request):
return HttpResponse('done')
pass
@login_required
def order_create(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(
order=order,
product=item['product'],
price=item['price'],
quantity=item['quantity'],
total_price=item['total_price'],
)
cart.clear()
param_dict = {
'MID': 'osIFyR31215257913677',
'ORDER_ID': str(order.id),
'TXN_AMOUNT': str(order.total_cost),
'CUST_ID': order.email,
'INDUSTRY_TYPE_ID': 'Retail',
'WEBSITE': 'WEBSTAGING',
'CHANNEL_ID': 'WEB',
'CALLBACK_URL': 'https://127.0.0.1:8000/handlerequest/'
}
param_dict['CHECKSUMHASH'] =
Checksum.generate_checksum_by_str(param_dict, MERCHANT_KEY)
return (request, 'paytm.html', {'order': order},
{'param_dict': param_dict})
else:
form = OrderCreateForm()
return render(request, 'create.html', {'form': form})
paytm.html
{% extends 'base.html' %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Paytm merchant Payment Page</title>
</head>
<body>
<h1> Redirecting you to the merchant.....</h1>
<h1> Please don't refresh this page.....</h1>
<form action="https://securegw-stage.paytm.in/theia/processTransaction" method="POST" name="paytm">
{% for key,value in param_dict.items %}
<input type="hidden" name="{{ key }}" value="{{ value }}">
{% endfor %}
</form>
</body>
<script>
document.paytm.submit();
</script>
</html>
Я ожидаю, что вывод будет опубликован в представлении handlerequest и должен показатьмне сделано.Но, к сожалению, этого не происходит.Также в paytm.html..form action = публикуется тестовая страница paytm, которая указана в https://developer.paytm.com/docs/v1/payment-gateway