我目前正在尝试制作一个django表单,以便为用户提供权限。我的模型有4种不同的权限:查看,更新,添加和删除。 我想有一个复选框系统,对于每个模型,管理员可以选择特定用户的权限
让我们说,我正在使用这种网址:myapp / update / permissions / user / 15 然后我到达一个页面来选择id为15的用户的权限。 为简单起见,我们假设我有一个名为' Comment'的模型。在此页面上,我可以选择用户是否可以查看,更新,添加或删除评论。当然,管理员可以一次选择多个复选框,并且已经预先检查了用户拥有的权限。
有谁知道我该如何处理?
提前多多感谢! :)
PS:我知道可以通过管理员应用程序向用户授予权限,但我希望拥有自己的应用程序来处理。
答案 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