当前分类:Django>>正文

Django,user新用户注册后不能登录管理后台?

来源:互联网   更新时间:2023年6月15日  

django框架自带一个user模型,我们开发的时候,可以直接使用,开放用户注册,也可以对这个表进行扩展,因为这个表自带了不少常用的字段属性以及方法,使用起来还是比较方便的。

今天,遇到个问题,这个user表开放注册,用户注册成功,并不能直接登录后台,而是需要超管将它设置为员工之后,才能登录。

那么有没有办法,用户直接注册就可以登录后台的呢?

肯定有,我们只需要在注册视图register中稍微设置一下就可以了。

代码如下:

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)         

            username = form.cleaned_data['username']
            password = form.cleaned_data['password1']
            user.set_password(password)     

            user.save()

            # 将新用户设置为员工

            user.is_staff = True

            user.save()           

            # 给用户添加添加 add_posts 和 view_posts 权限
            content_type = ContentType.objects.get_for_model(Posts)
            add_posts_permission = Permission.objects.get(content_type=content_type, codename='add_posts')
            view_posts_permission = Permission.objects.get(content_type=content_type, codename='view_posts')
            user.user_permissions.add(add_posts_permission, view_posts_permission)
            # 对新用户进行身份验证和登录
            user = authenticate(username=username, password=password)
            login(request, user)        

            # 重定向到主页
            return redirect('home')
    else:
        form = UserCreationForm()
    context = {'form': form}
    return render(request, 'user/register.html', context)      

这样一来,给新注册的用户设置为员工Staff,让它可以登录后台管理,同时为新注册的用户添加上了发布文章、浏览文章的权限了。

参照这个视图的写法,你还可以做一些其他的设置,比如创建一个组什么的。

本文固定链接:https://6yhj.com/leku-p-5629.html  版权所有,转载请保留本地址!
[猜你喜欢]

标签: django基础