为什么在此Django视图上出现“在功能之外'返回'”的信息?

时间:2019-05-21 14:19:56

标签: python django view

此代码会产生错误“函数外返回”。此文件(views.py)中的所有其他视图都是基于类的视图(createview等),但是此视图(我从头开始编写的视图)抛出错误?

class Submit(request):

    if request.method == "POST":
        submit_form = SubmitItemForm(data=request.POST)
        set_form = SubmitSetForm()

        if submit_form.is_valid():
            item = submit_form.save()
            item.save()

        elif set_form.is_valid():
            set = set_form.save()
            set.save()

    else:
        print(set_form.errors)

    submit_form = SubmitItemForm()
    set_form = SubmitSetForm()

    return render(request, 'curate/item_form.html',
                            {'submit_form':submit_form,
                             'set_form': set_form })

2 个答案:

答案 0 :(得分:1)

django 类基础视图的工作方式不是这样。

尝试制作纯功能基础视图类基础视图

def Submit(request):

    if request.method == "POST":
        submit_form = SubmitItemForm(data=request.POST)
        set_form = SubmitSetForm()

        if submit_form.is_valid():
            item = submit_form.save()
            item.save()

        elif set_form.is_valid():
            set = set_form.save()
            set.save()

    else:
        print(set_form.errors)

    submit_form = SubmitItemForm()
    set_form = SubmitSetForm()

    return render(request, 'curate/item_form.html',
                            {'submit_form':submit_form,
                             'set_form': set_form })

并参考CBV

答案 1 :(得分:0)

简单的答案是,您使用的是类而不是函数。由于只有函数可以返回,所以这是行不通的。如果您确实想在课堂上使用它,则可以执行以下操作:

class Submit_in_a_class:
    def class_submit(request):
        if request.method == "POST":
            submit_form = SubmitItemForm(data=request.POST)
            set_form = SubmitSetForm()

            if submit_form.is_valid():
                item = submit_form.save()
                item.save()

            elif set_form.is_valid():
                set = set_form.save()
                set.save()

        else:
            print(set_form.errors)

        submit_form = SubmitItemForm()
        set_form = SubmitSetForm()

        return render(request, 'curate/item_form.html',
                                {'submit_form':submit_form,
                                 'set_form': set_form })
def Submit(request):
    Submit_in_a_class.class_submit(request)

但是最好这样做:

def Submit(request):

    if request.method == "POST":
        submit_form = SubmitItemForm(data=request.POST)
        set_form = SubmitSetForm()

        if submit_form.is_valid():
            item = submit_form.save()
            item.save()

        elif set_form.is_valid():
            set = set_form.save()
            set.save()

    else:
        print(set_form.errors)

    submit_form = SubmitItemForm()
    set_form = SubmitSetForm()

    return render(request, 'curate/item_form.html',
                            {'submit_form':submit_form,
                             'set_form': set_form })

干杯!