ValueError视图未返回HttpResponse对象。它没有返回任何结果

2024-04-26 10:03:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个装饰器来在查看之前检查身份验证。我打算把这个装饰师放在所有的视图上。我已经确定我的代码正在被执行。但是我得到了上面的错误

这是我的装饰师: '''

def check_the_permissions(func):
   def wrap(request):
      soeid = request.GET.get('soeid')
      if not soeid:
          return HttpResponse("Please ..")
      is_allowed = getEEMSResponse(soeid, URL)
      if not is_allowed:
          return HttpResponse("You do not have ...")
      func(request)
   return wrap

@check_the_permissions
def LimitVsUsageTrend(request):
   scatterLimitVsUsage = plot(myfigure, output_type='div')
   return render(request, 'LimitVsUsageTrend.html", {'myplot': scatterLimitVsUsage})

'''

这是我的堆栈跟踪 回溯(最近一次呼叫最后一次): 文件“C:\Users\opt\exeception.py”第34行的内部响应=get\u响应(请求) 文件“C:\Users\opt\base.py”,在“获取”响应中的第126行“返回了无”。%(回调。模块,查看\u名称) ValueError:view plots.views.wrap未返回HttpResponse对象。它没有返回任何结果


Tags: thepermissionsgetreturnifisrequestdef
1条回答
网友
1楼 · 发布于 2024-04-26 10:03:36

您忘记返回func(request)调用的结果。此外,我还建议传递*args**kwargs,使decorator也适用于接受额外参数的函数:

def check_the_permissions(func):
   def wrap(request, *args, **kwargs):
      soeid = request.GET.get('soeid')
      if not soeid:
          return HttpResponse('Please ..')
      is_allowed = getEEMSResponse(soeid, URL)
      if not is_allowed:
          return HttpResponse('You do not have ...')
      return func(request, *args, **kwargs)
   return wrap

相关问题 更多 >