Django custom.methods.wrap文件';t返回HttpResponse对象。它没有返回任何结果
我的代码出了什么问题Django custom.methods.wrap文件';t返回HttpResponse对象。它没有返回任何结果,django,django-views,Django,Django Views,我的代码出了什么问题 我有条件地返回一个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,
我有条件地返回一个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
@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)
视图.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
@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)
我收到了此错误消息
视图custom.methods.wrap未返回HttpResponse对象。如果请求.user.role
作为'admin'
,但有一个.institute
带有.device
,或者该角色不是admin
,也不是'employee'
,则修饰后的函数将不会返回任何内容(因此无)
如果不执行重定向,则需要返回包装函数的结果:
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 view_func(request, *args, **kwargs)
return wrap
return decorator
如果1 request.user.role`不是'admin'
,也不是员工
,该怎么办?@WillemVanOnsem如果'request.user.role
不是管理员或员工,则应根据视图呈现模板conditions@RiajulHashem:但是在角色检查的elsif
下面没有else
。@WillemVanOnsem我得到了这就是问题所在,但是如何从else
statements@Wilem范昂森:谢谢:)