Reputation: 51
error message --> The view orders.views.charge didn't return an HttpResponse object. It returned None instead. any reason why my charge.html isn't working?
views,py
import time
import stripe
from django.conf import settings
from django.shortcuts import render
from django.urls import reverse
def charge(request):
if request.method == 'POST':
charge = stripe.Charge.create(
amount=500,
currency='eur',
description='A Django charge',
source=request.POST['stripeToken']
)
template = "orders/charge.html"
return render(request, template)
charge.html
{% extends "fuisce/base.html" %}
{% block content %}
<div class="container mt-5 text-center">
<h2 class="text-center">Thanks, you for your Orders</h2>
<a href="/my-orders" class="btn btn-success">My Orders</a>
</div>
{% endblock %}
urls.py
from django.urls import path
from . import views
from orders import views as order_views
from users import views as user_views
urlpatterns = [
path('checkout/', order_views.checkout, name='checkout'),
path('charge/', order_views.charge, name='charge'),
path('orders/', order_views.orders, name='user_orders'),
path('add_user_address/', user_views.add_user_address, name='add_user_address'),
]
Upvotes: 0
Views: 491
Reputation: 4821
Bring the returning code from your view outside the if condition if you want it to return on GET
requests.
def charge(request):
if request.method == 'POST':
charge = stripe.Charge.create(
amount=500,
currency='eur',
description='A Django charge',
source=request.POST['stripeToken']
)
template = "orders/charge.html"
return render(request, template)
Upvotes: 1