Удаление help_text из Django UserCreateForm

Вероятно, это плохой вопрос, но я использую Django UserCreationForm (слегка измененный для включения электронной почты), и я хотел бы удалить help_text, который Django автоматически отобразит на странице HTML.

В разделе «Регистрация» моей HTML-страницы у него есть поля Username, Email, Password1 & Password 2. Но под именем «Обязательно. 30 символов или меньше». Буквы, цифры и @ … только ». И в разделе «Подтверждение пароля» («Пароль 2») «Введите тот же пароль, что и выше для проверки».

  • Модели Django: Наследование и преемственность предков
  • Добавление ImageField к модели вызывает исключение в django
  • Печенье Django CSRF не установлено
  • Django / Python: как читать файл и проверять, что это аудиофайл?
  • Поиск неиспользуемого кода Django для удаления
  • Должен ли я добавлять файлы миграции Django в файл .gitignore?
  • Как удалить их?

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

  • Настройка django-paypal
  • pypi см. старые версии пакета
  • Как перейти прямо к шаблону, в urls.py Django?
  • Атрибут Python Ошибка при запуске скрипта: тип объекта «BaseCommand» не имеет атрибута «option_list»
  • Django - не удается загрузить статические файлы CSS
  • Возвращение массива JSON из представления Django в шаблон
  • 3 Solutions collect form web for “Удаление help_text из Django UserCreateForm”

    Вы можете установить help_text полей в None в __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() 

    вывод:

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

    Если вы делаете слишком много изменений, в таких случаях лучше просто переопределить поля, например

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

    но в вашем случае мое решение будет работать очень хорошо.

    Вы можете добавить класс css в файл registration_form.html, как это.

     <style> .helptext{ visibility: hidden; } </style> 

    Другим, более чистым вариантом является использование словаря help_texts в классе Meta. Пример:

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

    Больше информации здесь: https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#overriding-the-default-fields

    Работает идеально для имени пользователя и электронной почты, но не работает для пароля2. Не знаю, почему.

    Python - лучший язык программирования в мире.