1

我正在尝试捕获异常但不起作用。这是我认为的代码:

@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:”但错误仍然存​​在“活动匹配查询不存在。” 任何的想法?

谢谢!

4

2 回答 2

2

您需要在子句主体中移动可能导致异常的try:语句。

语法是“try: something catch stuff :” 你的东西在上面try:

act_edit= Activity.objects.filter(campaing=1).get(pk=edit)
try:

应该

try:
   act_edit = Activity.objects.filter(campaing=1).get(pk=edit)
于 2012-04-30T18:55:16.860 回答
2

你有一点冗余来捕捉异常意味着你不必检查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/')
于 2012-04-30T19:19:19.427 回答