python - 在 Django 中注册时将用户添加到组中
问题描述
这里是 Django 的新手。用户分为三种类型:Bronze、Silver 和 Gold,具有不同的权限。所有用户在注册时开始为青铜,然后在满足某些条件时向上移动。因此,我尝试使用 Django 的教程自定义用户模型。到目前为止,我已经能够正确创建用户。但是,我现在想在这些用户注册后立即将他们添加到 Bronze 组,但我不确定该代码应该放在哪里。这是我的代码。它相当简单。 模型.py
# models.py
from django.contrib.auth.models import AbstractUser, Group
from django.db import models
class CustomUser(AbstractUser):
pass
# add additional fields in here
def __str__(self):
return self.username
表格.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ('username', 'email')
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('username', 'email')
视图.py
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView
from .forms import CustomUserCreationForm
# Create your views here.
class SignUpView(CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
管理员.py
from django.contrib import admin
# Register your models here.
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email', 'username',]
admin.site.register(CustomUser, CustomUserAdmin)
我可以手动将用户添加到 django shell 上的组中。
>>>currUser.groups.add(Group.objects.get(name='Bronze'))
这段代码放在哪里,以便在注册时执行此命令?
任何帮助表示赞赏。
谢谢
解决方案
def 注册(请求):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.save()
user_group = Group.objects.get(name='Mygroup')
user.groups.add(user_group)
#log the user in
login(request, user)
return redirect('/summury')
else:
form = RegistrationForm()
return render(request, 'account/pages/register.html', {'form':form})
推荐阅读
- javascript - 命令不是函数
- python - 有效地在列表(或其他数据结构)中插入多个元素,保持它们的顺序
- javascript - 如何在有条件的情况下显示甜蜜警报
- python - 如何仅从另一个列表中的列表中获取文本?
- flutter - 我怎样才能在飞镖中获得期货最终价值?
- spring - 带有招摇模型对象的 Spring Boot HATEOAS
- c# - JProperty 删除字符串格式,因为将字段检测为日期
- gcc - 交叉编译的二进制文件在 RPi 3B 上而不是在 RPi 3B+ 上运行
- ios - #if 声明到 Swift 中的宏数组
- node.js - 为什么我在线程响应中未定义?