如何编辑或自定义用户名字段的必需字符?
How can I edit or customize the required characters of a username field?
我正在制作一个博客类型的网站,它已经大功告成,但今天早些时候我意识到其中的一个主要缺陷。 创建用户名时(注册或编辑个人资料时)它要求输入某些字符,但不允许我的名字中包含空格。
例如如果我希望我的用户名是“Winston Pichardo”,这是不可能的,因为这会触发错误“只有字母和数字作为@ /./+/-/_ 是允许的。
那么如何编辑这些 'requirements' 以允许用户名中有空格?
我正在使用默认的 django 表单并将它们与 Crispy Forms 结合使用以使其正常工作。
这些是我的代码的一些示例:
forms.py
class UserRegisterForm(UserCreationForm):
email = forms.EmailField(
label= 'Correo Electrónico',
required=True,
)
username = forms.CharField(
label = 'Nombre de Usuario',
required=True,
)
password1 = forms.CharField(
label = "Contraseña",
required=True
)
password2 = forms.CharField(
label = "Confirmar Contraseña",
required=True
)
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField(
label='Correo Electrónico',
required=True
)
username = forms.CharField(
required=True,
label='Nombre de Usuario'
)
class Meta:
model = User
fields = ['username', 'email']
class ProfileUpdateForm(forms.ModelForm):
image = forms.ImageField(
label = 'Foto de perfil'
)
class Meta:
model = Profile
fields = ['image']
register.html
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Cree su cuenta</legend>
{{ form|crispy }}
</fieldset>
<div>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Registrarse</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
¿Ya tiene una cuenta? <a class="ml-2" href='{% url 'login' %}'>Inicie sesión</a>
</small>
</div>
</div>
{% endblock content %}
apps.py
class UsersConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'users'
def ready(self):
import users.signals
如果你们需要我的代码中的其他内容,请随时告诉我。
其中一种方法是您可以更新模型的用户名字段并添加验证器,例如:
username = models.CharField(max_length=30, unique=True,
validators=[
validators.RegexValidator(r'^[\w. @+-]+$', _('Enter a valid username.'), 'invalid')
])
我正在制作一个博客类型的网站,它已经大功告成,但今天早些时候我意识到其中的一个主要缺陷。 创建用户名时(注册或编辑个人资料时)它要求输入某些字符,但不允许我的名字中包含空格。
例如如果我希望我的用户名是“Winston Pichardo”,这是不可能的,因为这会触发错误“只有字母和数字作为@ /./+/-/_ 是允许的。
那么如何编辑这些 'requirements' 以允许用户名中有空格?
我正在使用默认的 django 表单并将它们与 Crispy Forms 结合使用以使其正常工作。
这些是我的代码的一些示例:
forms.py
class UserRegisterForm(UserCreationForm):
email = forms.EmailField(
label= 'Correo Electrónico',
required=True,
)
username = forms.CharField(
label = 'Nombre de Usuario',
required=True,
)
password1 = forms.CharField(
label = "Contraseña",
required=True
)
password2 = forms.CharField(
label = "Confirmar Contraseña",
required=True
)
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField(
label='Correo Electrónico',
required=True
)
username = forms.CharField(
required=True,
label='Nombre de Usuario'
)
class Meta:
model = User
fields = ['username', 'email']
class ProfileUpdateForm(forms.ModelForm):
image = forms.ImageField(
label = 'Foto de perfil'
)
class Meta:
model = Profile
fields = ['image']
register.html
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Cree su cuenta</legend>
{{ form|crispy }}
</fieldset>
<div>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Registrarse</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
¿Ya tiene una cuenta? <a class="ml-2" href='{% url 'login' %}'>Inicie sesión</a>
</small>
</div>
</div>
{% endblock content %}
apps.py
class UsersConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'users'
def ready(self):
import users.signals
如果你们需要我的代码中的其他内容,请随时告诉我。
其中一种方法是您可以更新模型的用户名字段并添加验证器,例如:
username = models.CharField(max_length=30, unique=True,
validators=[
validators.RegexValidator(r'^[\w. @+-]+$', _('Enter a valid username.'), 'invalid')
])