【问题标题】:View doesn't return HttpResponse查看不返回 HttpResponse
【发布时间】:2018-10-30 12:45:12
【问题描述】:

视图 iot.views.post_new 没有返回 HttpResponse 对象。它返回 None 。 希望大家帮忙。

这是我的views.py文件:

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})

【问题讨论】:

  • 你能用英语而不是(我猜)越南语问吗?
  • 你能指导我如何解决它。
  • 我还建议您避免撰写有关您必须在 SO 中询问的事情的博客。特别是如果您“想要修复”而不是知识和理解。

标签: django django-views


【解决方案1】:

如果表单在您的if 子句中无效并且您发布了响应,则它不会返回render。这就是错误消息所抱怨的内容。

【讨论】:

  • 是的。我知道 。但我想得到修复。我正在为我的博客写一篇博文
【解决方案2】:

删除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})

【讨论】:

  • 不成功。数据未保存到数据库中
  • 我正在写博客,你能帮帮我吗?
  • 它没有被保存的唯一原因是表单中有错误。确保你在 html 页面上显示你的错误,这样你就可以看到什么不工作
【解决方案3】:
 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()

【讨论】:

  • 请对此答案添加解释
猜你喜欢
  • 2013-08-08
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多