为什么我在这个Django视图中得到“函数外的‘return’”?

2024-10-02 04:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

此代码生成错误“return outside of function”。这个文件中的所有其他视图(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 })


Tags: form视图returnifisrequestsave错误
2条回答

简而言之,您使用的是类而不是函数。因为只有函数可以返回,所以这不起作用。如果您真的想在类中使用它,可以执行以下操作:

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

干杯

这不是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

相关问题 更多 >

    热门问题