[Django]-Removing help_text from Django UserCreateForm

60πŸ‘

βœ…

You can set help_text of fields to None in __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()

output:

<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>

If you are doing too many changes, in such cases it is better to just override the fields e.g.

class UserCreateForm(UserCreationForm):
    password2 = forms.CharField(label=_("Whatever"), widget=MyPasswordInput 

but in your case my solution will work very well.

πŸ‘€Anurag Uniyal

22πŸ‘

Another, cleaner option is to use help_texts dictionary in class Meta. Example:

class UserCreateForm(UserCreationForm):
    ...
    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")
        help_texts = {
            'username': None,
            'email': None,
        }

More info in here: https://docs.djangoproject.com/en/stable/topics/forms/modelforms/#overriding-the-default-fields

Works perfect for username and email, but doesn’t work for password2. No idea why.

πŸ‘€iustitia

8πŸ‘

You can add css class to registration_form.html file like this.

<style>

.helptext{
  visibility: hidden;
}

</style>

6πŸ‘

Simple CSS solution.

<style>
     #hint_id_username, #hint_id_password1 {
         display: none;
     }
</style>

When the forms render inspect the page source code and you will see an id for each help text. Such as hint_id_username for each form field. Use the above CSS to hide the text.

πŸ‘€kvothe__

4πŸ‘

I had a similar issue. Based on one of the comments, here is the solution after reading the documentation.

class UserCreateForm(UserCreationForm):
    password1 = forms.CharField(label='Enter password', 
                                widget=forms.PasswordInput)
    password2 = forms.CharField(label='Confirm password', 
                                widget=forms.PasswordInput)
    class Meta:
        model=User
        fields=("username","email","first_name",
                "last_name","password1","password2")
        help_texts = {
            "username":None,
        }

Basically what we are trying to do is over-ride the automated setting by re-creating the password fields for our new class form.

πŸ‘€Ajay Shah

1πŸ‘

Or just iterate through form fields and omit to ouput "field.help_text"

{% for field in form %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
        <!--
        {% if field.help_text %}
           <p class="help">{{ field.help_text|safe }}</p>
        {% endif %}
        -->
    </div>
{% endfor %}

Django doc:
https://docs.djangoproject.com/en/3.0/topics/forms/#looping-over-the-form-s-fields

πŸ‘€cristian

1πŸ‘

For those who want to change the default text for a password 1 and 2 without having to recreate your default model, can try doing like i did. Just add this init function right under your class meta.

def __init__(self, *args, **kwargs):
      super().__init__(*args, **kwargs)
      self.fields['password1'].help_text='Your text'
      self.fields['password2'].help_text='Your text'
πŸ‘€INGl0R1AM0R1

0πŸ‘

Just go to UserCreationForm and make the required changes.

very simple hold control button on your keyboard and ckick on UserCreationForm you will get the UserCreationForm make the required changes as per your need and save it. as i did it for me in the below example i commented the Help Content.

  error_messages = {
    'password_mismatch': _("The two password fields didn't match."),
}
password1 = forms.CharField(
    label=_("Password"),
    strip=False,
    widget=forms.PasswordInput,
    # help_text=password_validation.password_validators_help_text_html(),
)
password2 = forms.CharField(
    label=_("Password confirmation"),
    widget=forms.PasswordInput,
    strip=False,
    help_text=_("Enter the same password as before, for verification."),
)

0πŸ‘

Just override the field’s help_text property.

For example

username = forms.CharField(help_text=None)

You don’t need to change any other parameters. It will work fine.

πŸ‘€Praveen Kumar

0πŸ‘

If you want to remove the help text from the fields in your custom SignUpForm, you can override the init method and set the help_text attribute of each field to an empty string. Here’s how you can do it:

Remove help text for all fields

    for field_name in self.fields:
        self.fields[field_name].help_text = ''
πŸ‘€Wayne Alex

-1πŸ‘

Add this CSS in order to remove help text.

<style>
    .helptext {
      visibility: hidden;
    }
    body > main > form > ul > li{
      display: none;
    }
 </style>
πŸ‘€king juno

Leave a comment