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范昂森:谢谢:)