2014-01-13 34 views
3

我有一个非常简单的视图,检查是否存在某些内容,然后重定向(如果不存在)。由于某种原因,它不起作用。异常继续发射。我已经验证了应该返回的数据库中有记录。在django视图中过滤和重定向没有按预期执行

欢迎任何建议。

@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') 
+0

'目标'是否有'created'和'user'字段? – karthikr

+1

什么例外?一个空的“except”很少是一个好主意,试着将它改为“Goal.DoesNotExist'除外,看看你是否得到了另一个错误(如果是这种情况,请发布完整的追溯) – sk1p

+0

太奇怪了。当我给你添加建议时,一切都开始奏效。这真的很奇怪。 –

回答

2

您是否尝试使用if语句和exists()?我觉得比较容易。

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') 

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