permission_required不在视图上工作

时间:2013-07-25 10:27:54

标签: django

我对Django视图的权限有疑问。

我在view.py上的代码:

@login_required(login_url='/kullaniciGirisi/')
@permission_required('reservationApp.change_reservation', login_url='/')
def rezervasyonDuzenle(request, id):

有两个app:App1:userLogin,App2:reservationApp

我在userLogin上分配了权限,但我在reservationApp

上使用了permission_required

作业:

  username = request.POST['username']
  password = request.POST['password']
  user = authenticate(username=username, password=password)
  pr = Permission.objects.get(codename='change_reservation')
  group = Group.objects.get(name='rol1')
  group.permissions.add(pr)
  userN = User.objects.get(username=username)
  userN.groups.add(group)

permission_required无效,每次返回login_url:/ 你对问题有什么看法吗?

3 个答案:

答案 0 :(得分:0)

如果您被重定向到login_url,则用户未登录,或者用户没有权限reservationApp.change_reservation。你能缩小其中的哪一个是这样的吗?

如果您不确定发生了什么,请在本地移除@permission_required装饰器,并将其置于顶部(或使用import pdb; pdb.set_trace())。

def rezervasyonDuzenle(request, id):
    print request.user.is_authenticated()
    print request.user.user_permissions.all()

答案 1 :(得分:0)

您可能正在使用超级用户登录。注销并与其他用户登录,您的问题可能会得到解决。我有这个问题,当我这样做时,解决了。

答案 2 :(得分:0)

您可能需要更改作业,

user = authenticate(username=username, password=password)
if user:
    pr = Permission.objects.get(codename='change_reservation')
    group = Group.objects.get(name='rol1')
    group.permissions.add(pr)
    group.save()
    user.groups.add(group)
    user.save()

您需要先保存更改。