python - 使用生成的用户名填充 Django 用户名字段
问题描述
我希望我的 Django 注册的用户名字段填充以下函数 -
def generateUsername():
username = firstname[0] + middlename[0] + lastname[0] + randomStringDigits(6) + getDateTimeStr()
return username
我目前正在使用来自 Django 的 UserRegisterForm 模型,并且希望找到集成到其中的方法,但是如果最好的选择是自定义我自己的用户模型,那么我也很乐意这样做。
视图.py -
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}')
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'users/register.html', {'form': form})
表格.py -
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
firstname = forms.CharField(max_length=20)
middlename = forms.CharField(max_length=20)
lastname = forms.CharField(max_length=20)
class Meta:
model = User
fields = ['email', 'firstname', 'middlename', 'lastname']
解决方案
您可以将其设置为包装在表单中的用户对象:
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
data = form.cleaned_data
username = f"{data['firstname'][0]}{data['middlename'][0]}{data['lastname'][0]}{randomStringDigits(6)}"
form.instance.username = username
form.save()
messages.success(request, f'Account created for {username}')
return redirect('login')
推荐阅读
- kotlin - Gradle 注释处理器顺序 (Android)
- javascript - 无法通过快捷方式访问 QML 中的菜单项
- r - Repeat transformation for all variables in R
- c# - 如何使用正确的连接字符串 .net 核心控制台应用程序
- xamarin.android - 关闭数据库并且无法从未打开的数据库错误中创建命令
- python - Discord.py 为投票添加反应
- python - 导入 pygame - 缺少模块/属性
- c - SELECT 不接收 C 中的数据
- assembly - 在 UEFI 汇编器应用程序中找不到 OutputString 偏移量
- android - android drawables自动使用原色着色,并且不会改变