Chr*_*Yin 20 python django django-models django-registration
可能是一个糟糕的问题,但我正在使用Django的UserCreationForm(略微修改为包含电子邮件),我想删除Django自动在HTML页面上显示的help_text.
在我的HTML页面的注册部分,它有用户名,电子邮件,密码1和密码2字段.但是在用户名下面是"必需的.不超过30个字符.字母,数字和@ ...".在密码确认(密码2)下,它显示"输入与上面相同的密码进行验证".
我该如何删除这些?
#models.py
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
def save(self, commit=True):
user = super(UserCreateForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
exclude = ('username.help_text')
#views.py
def index(request):
r = Movie.objects.all().order_by('-pub_date')
form = UserCreateForm()
return render_to_response('qanda/index.html', {'latest_movie_list': r, 'form':form}, context_instance = RequestContext(request))
#index.html
<form action = "/home/register/" method = "post" id = "register">{% csrf_token %}
<h6> Create an account </h6>
{{ form.as_p }}
<input type = "submit" value = "Create!">
<input type = "hidden" name = "next" value = "{{ next|escape }}" />
</form>
Run Code Online (Sandbox Code Playgroud)
Anu*_*yal 39
您可以将help_text字段设置为无__init__
from django.contrib.auth.forms import UserCreationForm
from django import forms
class UserCreateForm(UserCreationForm):
email = forms.EmailField(required=True)
def __init__(self, *args, **kwargs):
super(UserCreateForm, self).__init__(*args, **kwargs)
for fieldname in ['username', 'password1', 'password2']:
self.fields[fieldname].help_text = None
print UserCreateForm()
Run Code Online (Sandbox Code Playgroud)
输出:
<tr><th><label for="id_username">Username:</label></th><td><input id="id_username" type="text" name="username" maxlength="30" /></td></tr>
<tr><th><label for="id_password1">Password:</label></th><td><input type="password" name="password1" id="id_password1" /></td></tr>
<tr><th><label for="id_password2">Password confirmation:</label></th><td><input type="password" name="password2" id="id_password2" /></td></tr>
<tr><th><label for="id_email">Email:</label></th><td><input type="text" name="email" id="id_email" /></td></tr>
Run Code Online (Sandbox Code Playgroud)
如果您进行了太多更改,在这种情况下,最好只覆盖字段,例如
class UserCreateForm(UserCreationForm):
password2 = forms.CharField(label=_("Whatever"), widget=MyPasswordInput
Run Code Online (Sandbox Code Playgroud)
但在你的情况下,我的解决方案将非常有效.
小智 6
另一个更清洁的选择是在Meta类中使用help_texts字典.例:
class UserCreateForm(UserCreationForm):
...
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
help_texts = {
'username': None,
'email': None,
}
Run Code Online (Sandbox Code Playgroud)
更多信息请访问:https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#overriding-the-default-fields
适用于用户名和电子邮件,但不适用于password2.不知道为什么.
小智 6
简单的 CSS 解决方案。
<style>
#hint_id_username, #hint_id_password1 {
display: none;
}
</style>
Run Code Online (Sandbox Code Playgroud)
当表单呈现检查页面源代码时,您将看到每个帮助文本的 id。例如hint_id_username对于每个表单字段。使用上面的 CSS 隐藏文本。
您可以像这样将CSS类添加到registration_form.html文件。
<style>
.helptext{
visibility: hidden;
}
</style>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10792 次 |
| 最近记录: |