如何在没有admin web app的情况下为用户授予权限

时间:2017-03-22 22:54:38

标签: django forms permissions models

我目前正在尝试制作一个django表单,以便为用户提供权限。我的模型有4种不同的权限:查看,更新,添加和删除。 我想有一个复选框系统,对于每个模型,管理员可以选择特定用户的权限

让我们说,我正在使用这种网址:myapp / update / permissions / user / 15 然后我到达一个页面来选择id为15的用户的权限。 为简单起见,我们假设我有一个名为' Comment'的模型。在此页面上,我可以选择用户是否可以查看,更新,添加或删除评论。当然,管理员可以一次选择多个复选框,并且已经预先检查了用户拥有的权限。

有谁知道我该如何处理?

提前多多感谢! :)

PS:我知道可以通过管理员应用程序向用户授予权限,但我希望拥有自己的应用程序来处理。

1 个答案:

答案 0 :(得分:0)

您可以使用相应的复选框在模板中创建表单,并在视图中更新用户权限。

<强> form.html

<form method='post'>
    <label for="add">Can Add</label>
    <input type="checkbox" name="add" id="add" />
    <label for="change">Can Change</label>
    <input type="checkbox" name="change" id="change" />
    <label for="delete">Can Delete</label>
    <input type="checkbox" name="delete" id="delete" />
</form>

<强> views.py

def form(request):
    if request.method == "POST":
        form = request.POST
        if form.get('add'):
            if not user.has_perm('myapp.add_comment'):
                permission = Permission.objects.get(codename='add_bar')
                request.user.user_permissions.add(permission)
        if form.get('change'):
            if not user.has_perm('myapp.change_comment'):
                permission = Permission.objects.get(codename='change_bar')
                request.user.user_permissions.add(permission)
        if form.get('delete'):
            if not user.has_perm('myapp.delete_comment'):
                permission = Permission.objects.get(codename='delete_bar')
                request.user.user_permissions.add(permission)
return render(request, 'myapp/form.html', {})

了解更多信息: https://docs.djangoproject.com/en/1.10/topics/auth/default/#permissions-and-authorization