此代码会产生错误“函数外返回”。此文件(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 })
答案 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 })
干杯!