Ошибка Django: представление не вернуло объект HttpResponse. Вместо этого оно вернуло None
Для сайта электронной коммерции пытаюсь сделать следующее: Когда я нажимаю на кнопку заказать сейчас, он должен перенаправить на платежный url (url принимает параметр order_id). Но вместо этого я получаю " Представление ecomapp.views.pay не вернуло объект HttpResponse. Вместо этого оно вернуло None." ERROR
Я знаю, что этот вопрос уже задавался, но ни одно из решений не помогло мне решить проблему. Пожалуйста, помогите!
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('',views.index,name="index"),
path('about',views.about,name="about"),
path('contact',views.contact,name="contact"),
path('categories',views.categories,name="categories"),
path('productdetail/<slug:slug>',views.productdetail,name="productdetail"),
path('addtocart/<int:pro_id>',views.addtocart,name="addtocart"),
path('cartview',views.cartview,name="cartview"),
path("manage-cart/<int:cp_id>/",views.managecart, name="managecart"),
path("emptycart",views.emptycart, name="emptycart"),
path("checkout",views.checkout, name="checkout"),
path("register",views.register, name="register"),
path("login",views.login, name="login"),
path("logout",views.logout, name="logout"),
path("search",views.search, name="search"),
path("adminlogin",views.adminlogin, name="adminlogin"),
path("adminhome", views.adminhome, name="adminhome"),
path("adminorderdetail/<int:pk>/", views.adminorderdetail,name="adminorderdetail"),
path("pay", views.pay,name="pay")
]
views.py
@login_required(login_url="/login")
def checkout(request):
form = CheckoutForm(request.POST or None)
cart_id = request.session.get("cart_id", None)
if cart_id:
cart_obj = Cart.objects.get(id=cart_id)
if form.is_valid():
form.instance.cart = cart_obj
form.instance.subtotal = cart_obj.total
form.instance.discount = 0
form.instance.total = cart_obj.total
form.instance.order_status = "Order Received"
del request.session['cart_id']
o = form.save()
form = CheckoutForm()
return redirect(reverse("pay") + "?o_id=" + str(o.id))
else:
cart_obj = None
return render(request, "checkout.html", {'cart': cart_obj, 'form': form})
заплатить
def pay(request):
o_id = request.GET.get("o_id")
orderr = Order.objects.get(id=o_id)
order_amount = orderr.total*100
order_currency = "INR"
order = client.order.create(
dict(amount=order_amount, currency=order_currency))
context = {
'order_id': order['id'],
'amount': order['amount'],
'key_id': key_id
}
return render(request, "pay.html", context)
ОШИБКА
ValueError at /pay
The view ecomapp.views.pay didn't return an HttpResponse object. It returned None instead.
Request Method: GET
Request URL: http://127.0.0.1:8000/pay?o_id=63
Django Version: 4.0.1
Exception Type: ValueError
Exception Value:
The view ecomapp.views.pay didn't return an HttpResponse object. It returned None instead.
Exception Location: C:\Users\hello\AppData\Roaming\Python\Python39\site-packages\django\core\handlers\base.py, line 309, in check_response
Python Executable: C:\Program Files\Python39\python.exe
Python Version: 3.9.6
Python Path:
['C:\\Users\\hello\\Desktop\\PROOO\\ecomproject',
'C:\\Program Files\\Python39\\python39.zip',
'C:\\Program Files\\Python39\\DLLs',
'C:\\Program Files\\Python39\\lib',
'C:\\Program Files\\Python39',
'C:\\Users\\hello\\AppData\\Roaming\\Python\\Python39\\site-packages',
'C:\\Program Files\\Python39\\lib\\site-packages']
Server time: Wed, 12 Jan 2022 14:50:01 +0000