【发布时间】:2020-06-26 22:49:44
【问题描述】:
我的代码有什么问题..?
我有条件地返回一个 HttpResponse,但我不断收到错误
decorators.py
def has_permission_view():
def decorator(view_func):
def wrap(request, *args, **kwargs):
if request.user.role == 'admin':
if not hasattr(request.user, 'institute'):
messages.add_message(
request, messages.WARNING, "Please Add Your Institute Information")
return HttpResponseRedirect(reverse('accounts:add_institute'))
elif not hasattr(request.user.institute, 'device'):
messages.add_message(
request, messages.WARNING, "Please Add Your Attendance Device Information")
return HttpResponseRedirect(reverse('accounts:device'))
elif request.user.role == 'employee':
return HttpResponseRedirect(reverse('accounts:profile'))
return wrap
return decorator
views.py
@login_required
@has_permission_view()
def index(request):
context = {}
d = request.user.institute.device
zk = ZK(d.ip, d.port, timeout=5, password=0, force_udp=False, ommit_ping=False)
try:
conn = zk.connect()
context['object'] = conn
except Exception as e:
messages.add_message(request, messages.WARNING, e)
return render(request, 'index.html', context)
我收到此错误消息
The view custom.methods.wrap didn't return an HttpResponse object. It returned None instead.
【问题讨论】:
-
如果 1request.user.role` 不是
'admin'而不是employee怎么办? -
@WillemVanOnsem 如果 '
request.user.role不是 admin 或 employee 它应该根据视图条件呈现模板 -
@RiajulHashem: 但在
elsif下方没有else用于角色检查。 -
@WillemVanOnsem 我知道这就是问题所在,但我如何才能从
else语句返回视图(例如:索引视图)
标签: django django-views