Python Django:如何更改默认注册字段
我正在努力更改默认UserCreationForm-我能够通过创建子类添加一个额外字段:Python Django:如何更改默认注册字段,python,django,python-3.x,django-forms,django-2.0,Python,Django,Python 3.x,Django Forms,Django 2.0,我正在努力更改默认UserCreationForm-我能够通过创建子类添加一个额外字段: class SignUpForm(UserCreationForm): display_name = forms.CharField(max_length=32, help_text='Your display name') class Meta: model = User fields = ('username', 'display_name', 'pas
class SignUpForm(UserCreationForm):
display_name = forms.CharField(max_length=32, help_text='Your display name')
class Meta:
model = User
fields = ('username', 'display_name', 'password1', 'password2', )
def register(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
user.refresh_from_db()
user.profile.display_name = form.cleaned_data.get('display_name')
user.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return redirect('user/home')
else:
form = SignUpForm()
return header.views.show(request, 'userpanel/register.html', context={'form': form})
连同模板:
<form method="post">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}
{% if field.help_text %}
<small style="color: grey">{{ field.help_text | safe }}</small>
{% endif %}
{% for error in field.errors %}
<p style="color: red">{{ error | safe }}</p>
{% endfor %}
</p>
{% endfor %}
<button type="submit">Sign up</button>
</form>
{%csrf_令牌%}
{%形式的字段为%}
{{field.label_tag}}
{{field}}
{%if field.help_text%}
{{field.help_text | safe}}
{%endif%}
{%字段中有错误。错误%}
{{error | safe}
{%endfor%}
{%endfor%}
注册
我能够创建以下页面:
但是我在更改页面上的描述文本时遇到了问题。现在,如果我想改变要求。150个字符或更少。仅限字母、数字和@/+/-/-。还有别的事,怎么做?好吧,我想好了。通过以下方式列出表单的所有属性:
form = SignUpForm()
for d in dir(form):
print(d)
通过反复试验,我发现您可以列出表单的字段:
form = SignUpForm()
for d in form.fields:
print('field name:', d)
print('field label:', form.fields[d].label)
print('field text:', form.fields[d].help_text)
print("")
返回:
field name: username
field label: Username
field text: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
field name: display_name
field label: None
field text: Your display name
field name: password1
field label: Password
field text: <ul><li>Your password can't be too similar to your other personal information.</li><li>Your password mus
t contain at least 8 characters.</li><li>Your password can't be a commonly used password.</li><li>Your password can&
#39;t be entirely numeric.</li></ul>
field name: password2
field label: Password confirmation
field text: Enter the same password as before, for verification.
我得到:
标记您的答案已接受,将问题标记为已解决!我可以在两天内完成。
x = form.fields['username']
x.label = "foo"
x.help_text = "bar"