我对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:/ 你对问题有什么看法吗?
答案 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()
您需要先保存更改。