【发布时间】:2019-05-01 12:35:09
【问题描述】:
在我得到堆栈的表单中保存搜索词的定义中。这个定义给出了错误“赋值前引用的局部变量'form'”。就行了(如果 form.is_valid():)。我试图重新排序,但没有成功。对于更有经验的开发人员来说,这可能很容易。
def SearchCreateView(request):
template_name = 'SearchCreateView_form.html'
model = Search
form_class = SearchCreateViewForm
if request.method == 'POST':
if form.is_valid():
form = SearchCreateViewForm(request.POST or None, instance=search.user)
print(form.errors.as_text())
search = form.save(commit=False)
form.instance.search.user = self.request.search.user
return render_to_response(request, 'search.html', {'form': form})
else:
context = {'form': form}
return render_to_response(request, 'save.html', context)
else:
form = SearchCreateViewForm(request.POST or None)
return render(request, 'SearchCreateView_form.html', {'form': form})
【问题讨论】:
-
这是基于函数的视图,不是基于类的视图,所以不能使用
self。在search = form.save(commit=False)之后,只需执行search.user = self.request.user。最后你需要打电话给search.save()。 -
另外,不要使用
render_to_response,它已经过时了。请改用render()。
标签: django forms variable-assignment