Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django视图中的筛选和重定向未按预期执行_Django_Django Views_Django Urls - Fatal编程技术网

django视图中的筛选和重定向未按预期执行

django视图中的筛选和重定向未按预期执行,django,django-views,django-urls,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)

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

欢迎提出任何建议

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

是否尝试使用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')

也许这不是最漂亮的方法,但我认为它应该有效。

目标是否创建了
用户
字段?有什么例外?一个简单的
except
很少是一个好主意,试着把它改成
except Goal.DoesNotExist
,看看你是否遇到了另一个奇怪的错误(如果是这种情况,请发布完整的回溯)。当我加上你的建议时,一切都开始起作用了。这真的很奇怪。有趣:)如果你把它改回去,它又坏了吗?“ghost”错误可能与你的浏览器缓存重定向有关;您可能希望限制/禁用此类视图的缓存(例如使用decorator)