首页 > 解决方案 > Django ValueError:视图 usermanager.views.group_perm 没有返回 HttpResponse 对象。它返回 None 而不是

问题描述

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

这是我的视图文件 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')

标签: pythonhtmldjango

解决方案


在这里,您的 return 语句位于 group_perm 函数的 for 循环中

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

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')

推荐阅读