在django视图中过滤和重定向未按预期执行

时间:2014-01-13 22:33:44

标签: django django-views django-urls

我有一个非常简单的视图,检查是否存在某些内容,然后重定向,如果没有。由于某种原因,它不起作用。异常一直在发射。我已经确认数据库中有记录应该返回。

欢迎任何建议。

@login_required
def goal_display(request):
    user = get_object_or_404(User, id=request.user.id)

    if request.user != user:
        return permission_denied(request)

    try:
        goal = Goal.objects.filter(user=user).latest('created')

        return render_to_response('achieve/dashboard.html', {
                "goal": goal
                }, context_instance=RequestContext(request))
    except:
        return redirect('goal_add')

1 个答案:

答案 0 :(得分:2)

您是否尝试使用if语句并且存在()?我认为更容易。

def goal_display(request):
user = get_object_or_404(User, id=request.user.id)

if request.user != user:
    return permission_denied(request)

if(Goal.objects.filter(user=user).lastest('created').exists()):
    goal = Goal.objects.filter(user=user).latest('created')

    return render_to_response('achieve/dashboard.html', {
            "goal": goal
            }, context_instance=RequestContext(request))
else:
    return redirect('goal_add')

也许不是最漂亮的方式,但我认为它应该有用。