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)