View没有返回HttpResponse对象。它返回了None

时间:2016-04-15 22:39:36

标签: python django python-2.7 django-views

下面的视图给出了使用POST方法时的错误。我正在尝试将模型数据加载到表单中,允许用户编辑,然后更新数据库。当我尝试保存更改时,我收到上述错误。

import numpy as np

x = range(10)
y = range(10)

ticks = [ctime(1), ctime(2), ctime(3)]
xtickpos = np.linspace(min(x), max(x), 3)

plt.plot(x,y)
plt.xticks(xtickpos, ticks)

这是来自终端的踪迹。

def edit(request, row_id):
    rating = get_object_or_404(Rating, pk=row_id)
    context = {'form': rating}
    if request.method == "POST":
        form = RatingForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home.html')
    else:
        return render(
            request,
            'ratings/entry_def.html',
            context
        )

4 个答案:

答案 0 :(得分:4)

如果form.is_valid()您正在重定向,但该表单无效?在这种情况下,没有任何代码可以执行?那里没有代码。当函数没有显式返回值时,给出返回值的调用者None。因此错误。

您可以尝试这样的事情:

def edit(request, row_id):
    rating = get_object_or_404(Rating, pk=row_id)
    context = {'form': rating}
    if request.method == "POST":
        form = RatingForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home.html')
        else :
            return render(request, 'ratings/entry_def.html', 
                          {'form': form})
    else:
        return render(
            request,
            'ratings/entry_def.html',
            context
        )

这将导致表单再次显示给用户,如果您已正确编码模板,则会显示哪些字段无效。

答案 1 :(得分:0)

我有同样的错误,不管你信不信,是Python的缩进。

答案 2 :(得分:0)

您对Python文件缩进的错误。在遵循教程和/或复制粘贴代码时,请务必小心。缩进不正确会浪费很多宝贵的时间。

答案 3 :(得分:0)

你应该返回你正在渲染的文件而不是直接渲染。

def index(request):
    return render(request, 'index.html')

def login(request):
    return render(request,'login.html')

def logout(request): 
    return render(request,'index.html')