我正在尝试捕获异常但不起作用。这是我视图中的代码:
@login_required
def activities_edit(request, edit):
ActivityFormSet = modelformset_factory(Activity, can_delete=True)
act_edit= Activity.objects.filter(campaing=1).get(pk=edit)
try:
if act_edit:
if request.method == 'POST':
formset = ActivityFormSet(request.POST, request.FILES, queryset=Activity.objects.filter(pk=edit))
if formset.is_valid():
formset.save()
return HttpResponseRedirect('/activities/')
else:
formset = ActivityFormSet(queryset=Activity.objects.filter(pk=edit))
except act_edit.DoesNotExist:
return HttpResponseRedirect('/activities/')
我也在尝试:“除了act_edit.DoesNotExist:” 但错误仍然存在“活动匹配查询不存在”。 任何的想法?
谢谢!
答案 0 :(得分:3)
您需要在try:
子句的主体中移动可能导致异常的语句。
语法是“try:某事抓住东西:”你的某事高于try:
act_edit= Activity.objects.filter(campaing=1).get(pk=edit)
try:
应该是
try:
act_edit = Activity.objects.filter(campaing=1).get(pk=edit)
答案 1 :(得分:3)
你有一点冗余捕获异常意味着你不必检查act_edit是否为空,因为如果它是空的,它将引发DoesNotExist。此外,模型的DoesNotExist
不是实例。
@login_required
def activities_edit(request, edit):
ActivityFormSet = modelformset_factory(Activity, can_delete=True)
try:
act_edit= Activity.objects.filter(campaing=1).get(pk=edit)
if request.method == 'POST':
formset = ActivityFormSet(request.POST, request.FILES, queryset=Activity.objects.filter(pk=edit))
if formset.is_valid():
formset.save()
return HttpResponseRedirect('/activities/')
else:
formset = ActivityFormSet(queryset=Activity.objects.filter(pk=edit))
#HttpResponse not returned error here.
except Activity.DoesNotExist:
return HttpResponseRedirect('/activities/')