0

我对 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 :/ 你对问题有什么想法吗?

4

3 回答 3

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()
于 2013-07-25T10:41:37.130 回答
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()

您需要先保存更改。

于 2017-07-22T09:07:35.347 回答
0

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

于 2017-07-22T08:41:37.430 回答