Python 无法在视图中的def内返回HttpResponse
我似乎无法使我的视图返回HttpResponse对象。我的观点是根据属性选择值调用def。 以下是my views.py代码:Python 无法在视图中的def内返回HttpResponse,python,django,Python,Django,我似乎无法使我的视图返回HttpResponse对象。我的观点是根据属性选择值调用def。 以下是my views.py代码: def assign_attribute_value(request, id_item_type): """ """ def integer_attr(item_type): form = forms.AssignIntegerTypeForm() if request.method == "POST":
def assign_attribute_value(request, id_item_type):
"""
"""
def integer_attr(item_type):
form = forms.AssignIntegerTypeForm()
if request.method == "POST":
form = forms.AssignIntegerTypeForm(request.POST)
if form.is_valid():
attr_int = form.cleaned_data['attr_int']
item_type.attr_int = attr_int
item_type.save()
return HttpResponseRedirect('/des/list_item_types/')
else:
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
def string_attr(item_type):
form = forms.AssignStringTypeForm()
if request.method == "POST":
form = forms.AssignStringTypeForm(request.POST)
if form.is_valid():
attr_str = form.cleaned_data['attr_str']
item_type.attr_str = attr_str
item_type.save()
return HttpResponseRedirect('/des/list_item_types/')
else:
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
def boolean_attr(item_type):
form = forms.AssignBooleanTypeForm()
if request.method == "POST":
form = forms.AssignBooleanTypeForm(request.POST)
if form.is_valid():
attr_bool = form.cleaned_data['attr_bool']
item_type.attr_bool = attr_bool
item_type.save()
return HttpResponseRedirect('/des/list_item_types/')
else:
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
def date_attr(item_type):
form = forms.AssignDateTypeForm()
if request.method == "POST":
form = forms.AssignDateTypeForm(request.POST)
if form.is_valid():
attr_date = form.cleaned_data['attr_date']
item_type.attr_date = attr_date
item_type.save()
return HttpResponseRedirect('/des/list_item_types/')
else:
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
ctx = {'form':form}
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
type_func = {0: integer_attr,
1: string_attr,
2: boolean_attr,
3: date_attr,
}
item_type = ItemType.objects.get(id=id_item_type)
type_func[item_type.choice](item_type=item_type)
您的代码:
def assign_attribute_value(request, id_item_type):
def integer_attr(item_type):
...
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
def string_attr(item_type):
...
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
def boolean_attr(item_type):
...
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
def date_attr(item_type):
...
return render_to_response('des/item_type/assign_attribute_value.html', ctx, context_instance=RequestContext(request))
type_func = {0: integer_attr,
1: string_attr,
2: boolean_attr,
3: date_attr,
}
item_type = ItemType.objects.get(id=id_item_type)
type_func[item_type.choice](item_type=item_type)
您定义了几个回调,并且正在调用它们,但是您没有从视图返回任何回调返回的呈现响应。这样做:
def assign_attribute_value(request, id_item_type):
...
return type_func[item_type.choice](item_type=item_type)
顺便说一句,我建议您将这些回调放在模块级别,以避免在每次视图调用中编译它们。或者在单独的方法中使用基于类的视图和这些回调。您忘记了从视图返回值,我想:return type\u func[item\u type.choice]item\u type=item\u type是否有错误?