django 中 view.py 中的语法无效。?

invalid syntax in view.py in django.?

我在 Django 中遇到错误:语法无效 (views.py)。

def deals(request):
    form = deals()
    if request.method == "POST":
        form = deals(request.POST, request.FILES)
    if form.is_valid():
        form.save()
    else:
        return render_to_response("deals.html", {'form':form}, context_instance=RequestContext(request))
    else:
    form = deals()
    return render_to_response("deals.html", {'form':form}, context_instance=RequestContext(request))

问题实际上是缩进的问题,表现为语法错误。 if form.is_valid() 开头的四行应缩进一级。

但是,这仍然不是推荐的模式。你根本不需要内部 else ,你必须在成功后重定向 post.

def deals(request):
    form = DealsForm()
    if request.method == "POST":
        form = DealsForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('/')   # or wherever
    else:
        form = DealsForm()
    return render(request "deals.html", {'form':form})

我还使用了 render 快捷方式而不是 render_to_response,因为它会自动使用 RequestContext。

请注意,所有这些都在文档中明确给出;没有理由做任何其他事情。