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,让它可以登录后台管理,同时为新注册的用户添加上了发布文章、浏览文章的权限了。
参照这个视图的写法,你还可以做一些其他的设置,比如创建一个组什么的。
标签: django基础