我有一个简单的视图,我正在保存表格。 代码似乎“干净”,但我无法摆脱错误:“视图没有返回一个HttpResponse对象。” 虽然我在网上搜索过,但我没有找到相关的指示。
def classroom_privacy(request,classname):
theclass = Classroom.objects.get(classname=classname)
if request.method == 'POST':
form = PrivacyClass(request.POST)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.save()
return HttpResponseRedirect('.')
else:
form = PrivacyClass()
return render_to_response('classroom/classroom_privacy.html', {'form': form},
context_instance=RequestContext(request))
谢谢!
答案 0 :(得分:26)
验证代码的缩进
def classroom_privacy(request, classname):
theclass = Classroom.objects.get(classname=classname)
if request.method == 'POST':
form = PrivacyClass(request.POST)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.save()
return HttpResponseRedirect('.')
else:
form = PrivacyClass()
return render_to_response('classroom/classroom_privacy.html', {'form': form}, context_instance=RequestContext(request))
如果是获取请求,则呈现未绑定的表单
如果是发布请求且无效表单呈现绑定表单
如果是发布请求且有效表单重定向页面
答案 1 :(得分:6)
所有视图函数都必须返回某种HttpResponse对象。您的函数中存在一个代码路径,而是返回None
。这将在request.method != 'POST'
时发生,您只需“退出函数的末尾”(将返回None
)。
答案 2 :(得分:0)
如果您使用的是 Django Rest框架。使用以下代码返回 HTTP响应以解决此问题。
from django.http import HttpResponse
def TestAPI(request):
# some logic
return HttpResponse('Hello')
JSON 响应返回示例:
def TestAPI(request):
your_json = [{'key1': value, 'key2': value}]
return HttpResponse(your_json, 'application/json')
有关 HttpResponse 的更多详细信息: https://docs.djangoproject.com/en/3.1/ref/request-response/#django.http.HttpResponse