-6

The view iot.views.post_new didn't return an HttpResponse object. It returned None instead. Hope everybody help please.

This is my views.py file:

def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST or None)
        if form.is_valid():
            ct = form.save(commit=False)
            ct.author = request.user
            ct.upload_time = request.upload_time
            ct.save()
            return redirect('iot:detail', pk=ct.pk)
    else:
        form = PostForm()
        return render(request, 'iot/post.html', {"form":form})
mooga
  • 3,136
  • 4
  • 23
  • 38

3 Answers3

1

Remove the else

def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST or None)
        if form.is_valid():
            ct = form.save(commit=False)
            ct.author = request.user
            ct.upload_time = request.upload_time
            ct.save()
            return redirect('iot:detail', pk=ct.pk)

    form = PostForm()
    return render(request, 'iot/post.html', {"form":form})
HenryM
  • 5,557
  • 7
  • 49
  • 105
0

If the form isn't valid in your if clause and you POST a response, it won't return render. That's what the error message is complaining about.

Benjamin Hicks
  • 756
  • 3
  • 7
0
 The view store.views.updateItem didn't return an HttpResponse object. It returned None instead.


def updateItem(request):
    data = json.loads(request.body)
    productId = data['productId']
    action = data['action']

    print('Action:', action)
    print('Product:', productId)

    customer = request.user.customer
    product = Product.objects.get(id=productId)
    order, created = Order.objects.get_or_create(customer=customer, complete=False)

    orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)

    if action == 'add':
        orderItem.quantity = (orderItem.quantity + 1)
    elif action == 'remove':
        orderItem.quantity = (orderItem.quantity - 1)

    orderItem.save()

    if orderItem.quantity <= 0:
        orderItem.delete()