如何在Django注册期间为用户添加权限?

时间:2017-01-17 13:14:31

标签: django

我在views.py

中有一个注册方法
def register_page(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = User.objects.create_user(username=form.cleaned_data['username'],
                                            password=form.cleaned_data['password1'],
                                            email=form.cleaned_data['email'])
            if request.POST.get("admin", ""):
                content_type = ContentType.objects.get_for_model(User)
                permission = Permission.objects.get(codename='admin_can_manage_users')
                user.user_permissions.add(permission)
            new_user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'])
            login(request, new_user)
            return redirect('payment_list')
    form = RegistrationForm()
    variables = RequestContext(request, {'form': form})
    return render_to_response('registration/register.html',variables)

我还有一个带有标准字段的注册表单和其他手动添加的复选框。我想检查是否选中了一个复选框,如果是,则向用户添加权限。

<form method="post" action=".">
{{ form.as_p }}
    <input type="radio" class='radio-button' name="regular" id="regular"/><label for="regular">User</label>
    <input type="radio" class='radio-button' name="manager" id="manager"/><label for="manager">Manager</label>
    <input type="radio" class='radio-button' name="admin" id="admin"/><label for="admin">admin</label>
<input type="submit" value="register" />

</form>

现在不会自动分配权限。以前我将此权限分配给第一个用户并且它有效但当我尝试将其分配给另一个用户时什么都没有。

2 个答案:

答案 0 :(得分:1)

您是否保存了用户?

user.user_permissions.add(permission)
user.save()

您还可以打开日志并查看django对数据库执行的查询,例如this

答案 1 :(得分:0)

错误是因为命名空间:我的权限是在auth命名空间中。刚换到另一个(另一个模型),它完美无缺。