Nano Hash - криптовалюты, майнинг, программирование

Django UserCreationForm для пользовательской модели выводит 3 поля пароля: пароль, пароль1 и пароль2.

Итак, у меня есть форма регистрации пользователя на основе AbstractUser, которая заменяет модель Django в моих настройках.py, модель добавляет только пару полей, которые мне нужны для информации о пользователях, когда я тестировал регистрационную форму, пользователь не получил создан, я отладил и обнаружил, что и последний вход в систему, и дата присоединяются там, где это необходимо, поэтому я установил их как скрытые входы со значением

{% now "SHORT_DATE_FORMAT" %} 

это устранило первые две ошибки, однако есть третья ошибка, в которой говорится, что требуется поле пароля, то есть моя форма запрашивает у меня пароль, пароль1 и пароль2

Я бы очень признателен за вашу помощь!

Это мои взгляды.py

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)

        if form.is_valid():
            new_user = form.save(commit=False)
            new_user.is_active = True
            new_user.save()
            group = Group.objects.get(name='Usuario')
            new_user.groups.add(group)
            return HttpResponseRedirect('/')

   else:
       form = UserRegisterForm()

   return render_to_response('register.html', locals(), RequestContext(request))

это моя модель

class SiteUser(AbstractUser):
    descripcion = models.TextField(blank=True, null=True)
    direccion = models.CharField(max_length=255, blank=True, null=True)
    image = models.ImageField(upload_to='imagenes_usuarios', blank=True, null=True)
    thumbnail = models.ImageField(upload_to='imagenes_usuarios/thumbs', blank=True, null=True)
    slug = models.SlugField(default='', blank=True)

Forms.py

class UserRegisterForm(UserCreationForm):
    class Meta:
        model = SiteUser

    def clean_username(self):
        username = self.cleaned_data["username"]
        try:
            # Not sure why UserCreationForm doesn't do this in the first place,
            # or at least test to see if _meta.model is there and if not use User...
            self._meta.model._default_manager.get(username=username)
        except self._meta.model.DoesNotExist:
            return username
        raise forms.ValidationError(self.error_messages['duplicate_username'])

А вот мой шаблон

<div class="content">
    <form class="registration" method="POST" action="{% url 'register' %}">
        {% csrf_token %}
        <input type="hidden" name="date_joined" value="{% now "SHORT_DATETIME_FORMAT" %}">
        <input type="hidden" name="last_login" value="{% now "SHORT_DATETIME_FORMAT" %}">

        <div class="row">
            <div class="form-group {% if form.username.errors %}has-error{% endif %} col-xs-6">
                <label for="{{ form.username.id_for_label }}"
                       class="control-label">{{ form.username.label }}</label>
                <input type="text" id="{{ form.username.id_for_label }}" class="form-control"
                       name="{{ form.username.html_name }}">
                {% for error in form.username.errors %}
                    <span class="help-block">{{ error }}</span>
                {% endfor %}
            </div>
            <div class="form-group {% if form.first_name.errors %}has-error{% endif %} col-xs-6">
                <label for="{{ form.first_name.id_for_label }}"
                       class="control-label">{{ form.first_name.label }}</label>
                <input type="text" id="{{ form.first_name.id_for_label }}" class="form-control"
                       name="{{ form.first_name.html_name }}">
                {% for error in form.first_name.errors %}
                    <span class="help-block">{{ error }}</span>
                {% endfor %}
            </div>
        </div>
        <div class="row">
            <div class="form-group {% if form.last_name.errors %}has-error{% endif %} col-xs-6">
                <label for="{{ form.last_name.id_for_label }}"
                       class="control-label">{{ form.last_name.label }}</label>
                <input type="text" id="{{ form.last_name.id_for_label }}" class="form-control"
                       name="{{ form.last_name.html_name }}">
                {% for error in form.last_name.errors %}
                    <span class="help-block">{{ error }}</span>
                {% endfor %}
            </div>
            <div class="form-group {% if form.email.errors %}has-error{% endif %} col-xs-6">
                <label for="{{ form.email.id_for_label }}"
                       class="control-label">{{ form.email.label }}</label>
                <input type="text" id="{{ form.email.id_for_label }}" class="form-control"
                       name="{{ form.email.html_name }}">
                {% for error in form.email.errors %}
                    <span class="help-block">{{ error }}</span>
                {% endfor %}
            </div>
        </div>
        <div class="row">
            <div class="form-group {% if form.password1.errors %}has-error{% endif %} col-xs-6">
                <label for="{{ form.password1.id_for_label }}"
                       class="control-label">{{ form.password1.label }}</label>
                <input type="password" id="{{ form.password1.id_for_label }}" class="form-control"
                       name="{{ form.password1.html_name }}">
                {% for error in form.password1.errors %}
                    <span class="help-block">{{ error }}</span>
                {% endfor %}
            </div>
            <div class="form-group {% if form.password2.errors %}has-error{% endif %} col-xs-6">
                <label for="{{ form.password2.id_for_label }}"
                       class="control-label">{{ form.password2.label }}</label>
                <input type="password" id="{{ form.password2.id_for_label }}" class="form-control"
                       name="{{ form.password2.html_name }}">
                {% for error in form.password2.errors %}
                    <span class="help-block">{{ error }}</span>
                {% endfor %}
            </div>
        </div>
        <input type="submit">

    </form>
</div>

  • Я не знаю ответа на ваш вопрос, но если у вас все еще есть возможность сменить технологию, я бы порекомендовал вам посмотреть django-registration и crispy-forms чтобы сделать такие вещи намного проще. 07.11.2013
  • @Гарри Спасибо за ваше предложение!! Я думал об этом, однако я не был уверен, что django-registration потребует слишком много настроек для работы с пользовательской моделью пользователя, так ли это, я не могу найти официальную документацию об этом 07.11.2013

Ответы:


1

Поскольку вы используете UserCreationForm, для проверки и сохранения формы требуются все поля, почему бы вместо этого не попробовать ModelForm.

Обратитесь к этому: https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/

19.01.2017
  • Пожалуйста, дайте ссылку на документацию. 19.01.2017
  • docs.djangoproject.com/en/1.10/topics/forms/modelforms Обратитесь к этому 19.01.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..