【问题标题】:Django ValueError: The view usermanager.views.group_perm didn't return an HttpResponse object. It returned None insteadDjango ValueError:视图 usermanager.views.group_perm 没有返回 HttpResponse 对象。它返回 None 而不是
【发布时间】:2020-08-09 17:50:49
【问题描述】:

我正在创建一个新闻网站。当我尝试从组中删除权限时,会显示相同的错误。此函数上面的代码几乎相同。但他们工作正常。请帮助

这是我的视图文件 def group_perm(request, name):

if not request.user.is_authenticated:
    return redirect('my_login')


perm = 0

for i in request.user.groups.all():
    if i.name == "masteruser": perm = 1

if perm == 0:
    error = "Access Denied"
    return render(request, 'back/error.html',{'error': error})


permission = Permission.objects.all()


for group in Group.objects.filter(name=name):
    gperm = group.permissions.all()


    return render(request, 'back/group_perm.html', {'gperm':gperm, 'name':name, 'permission': permission})

def group_permission_del(request, gname, name):

if not request.user.is_authenticated:
    return redirect('my_login')


perm = 0
 #"request.user" means current logged User
for i in request.user.groups.all():
    if i.name == "masteruser": perm = 1

if perm == 0:
    error = "Access Denied"
    return render(request, 'back/error.html',{'error': error})



group = Group.objects.get(name=gname)

gperm = Permission.objects.get(codename=name)


group.permissions.remove(gperm)

return redirect('manage_permission')

【问题讨论】:

    标签: python html django


    【解决方案1】:

    这里,你的 return 语句在 group_perm 函数的 for 循环中

    空白用于表示块。像使用 curl 的其他语言一样 括号 { , }。

    def group_perm(request, name):
        for i in request.user.groups.all():
            if i.name == "masteruser": perm = 1
    
        if perm == 0:
            error = "Access Denied"
            return render(request, 'back/error.html', {'error': error})
    
        permission = Permission.objects.all()
    
        for group in Group.objects.filter(name=name):
            gperm = group.permissions.all()
    
        return render(request, 'back/group_perm.html', {'gperm': gperm, 'name': name, 'permission': permission})
    

    编辑:1

    Django ValueError:视图 usermanager.views.group_perm 没有返回 一个 HttpResponse 对象。它返回 None

    这个错误的答案是你的 return 语句在 for 循环中,因此,当你调用你的函数时,它返回 None。就这样解决了吗?

    现在你的另一个功能是:

    def group_permission_del(request, gname, name):
        if not request.user.is_authenticated:
            return redirect('my_login')
    
        perm = 0
        # "request.user" means current logged User
        for i in request.user.groups.all():
            if i.name == "masteruser": perm = 1
    
        if perm == 0:
            error = "Access Denied"
            return render(request, 'back/error.html', {'error': error})
    
        group = Group.objects.get(name=gname)
        gperm = Permission.objects.get(codename=name)
        group.permissions.remove(gperm)
    
        return redirect('manage_permission')
    

    【讨论】:

    • UnboundLocalError:分配前引用了局部变量“gperm”。更改代码后显示此错误
    • 现在它使用get(以前的过滤方法)方法和组pk(以前使用组名)。我不知道为什么它不适用于组名。
    • 使用调试器,考虑检查您在函数中获得的值,例如您在def group_perm(... 中收到的组名?
    • 是的,它是接收组名。但我将代码更改为按 pk 分组。现在它的工作
    猜你喜欢
    • 2021-12-10
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2017-01-25
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多