python - 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')
解决方案
在这里,您的 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')
推荐阅读
- tfs - TFS:更改状态类别
- c++ - C++11 中的类型转发
- ios - 为什么我在 for() 行上出现 EXC_CRASH (SIGABRT) 错误
- php - 如何使用安装在 mcrypt_decrypt() 的 openssl_decrypt()
- java - Spring Boot Error getOutputStream() has already been called for this response after forward
- php - Doctrine Join - 没有关联命名
- postgresql - JSON类型的char_length替代品?
- visual-studio - 在没有 VS2017 警告的情况下在 QtC 中使用 clang 注释
- actionscript-3 - 我可以通过 Worker 关闭 AIR 应用程序吗?
- python - 为什么我在 python 中的字典总是有序的?