автозаполнение включает имя пользователя и пароль при добавлении пользовательских полей в django usercreateform - PullRequest
0 голосов
/ 26 сентября 2019

Я использую AbstractUser для расширения встроенной пользовательской модели.Затем я использую UserCreateForm для создания добавления пользователей в приложение.Когда я добавляю свои настраиваемые поля, которые я создал, в «fields = []», встроенные поля имени пользователя и пароля в визуализированной форме начинают автозаполнение, как при входе в систему, когда я удаляю свои настраиваемые поля, он возвращается к обычному состоянию

Ссылка на изображение без отображения пользовательских полей при желании https://imgur.com/JFGswFN

ссылка на изображение с отображением пользовательских полей с проблемой https://imgur.com/rlZI032

Возможно, сначала нужно скопировать вставленные изображения в веб-браузер.Время размещения здесь и не удалось выяснить, как загрузить изображение или получить ссылку на работу.

Я попробовал следующее, но ничего из этого не работает:

    def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['username'].widget.attrs.update({
                'autocomplete': 'off'})
    <form method="POST" autocomplete='off' novalidate>

, а также попытался добавить его в раздел виджетов в классе Meta для полей username и password1.

models.py


from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.text import slugify
import string


class Department(models.Model):
    department = models.CharField(max_length=30, unique=True)
    slug = models.SlugField(unique=True)

    class Meta:
        ordering = ['department']

    def save(self, *args, **kwargs):
        self.slug = slugify(self.department)
        self.department = self.department.title()
        super(Department, self).save()

    def __str__(self):
        return self.department


class CustomUser(AbstractUser):
    remote_login = models.BooleanField(null=True, default=False)
    department = models.ForeignKey(
        Department, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return self.username

views.py

from django.shortcuts import get_object_or_404, render
from django.views.generic import CreateView, DeleteView, UpdateView, DetailView, ListView
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from .models import CustomUser, Department
from django.urls import reverse_lazy
from .forms import *

class UserCreateView(LoginRequiredMixin, CreateView):
    template_name = 'users/user_accounts/user_create.html'
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('active_users')

form.py

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm):

    class Meta:
        model = CustomUser

        fields = ['first_name',
                  'last_name',
                  'email',
                  'department',
                  'username', ]

user_create.html

{% block title %}Create User{% endblock title %}

{% block user_content %}

<form method="POST" action='' novalidate>

{% csrf_token %}

<div class='container mt-5'>
    <div class="row justify-content-center">
        <div class="col-6">
            <div class="card">
                <div class="card-body">
                    <h2 class="text-center display-4">Create User</h2>
                    {% include 'formbase.html' %}
                    <button name='submit' type="submit" class="btn btn-primary">Submit</button>
                </div>
            </div>
        </div>
    </div>
</div>  

</form>

formbase.html

{% load widget_tweaks %}

  {% for hidden_field in form.hidden_fields %}
    {{ hidden_field }}
  {% endfor %}

  {% if form.non_field_errors %}
    <div class="alert alert-danger" role="alert">
      {% for error in form.non_field_errors %}
        {{ error }}
      {% endfor %}
    </div>
  {% endif %}

  {% for field in form.visible_fields %}
    <div class="form-group">
      {{ field.label_tag }}

      {% if form.is_bound %}
        {% if field.errors %}
          {% render_field field class="form-control is-invalid" %}
          {% for error in field.errors %}
            <div class="invalid-feedback font-weight-bold">
              {{ error }}
            </div>
          {% endfor %}
        {% else %}
          {% render_field field class="form-control is-valid" %}
        {% endif %}
      {% else %}
        {% render_field field class="form-control" %}
      {% endif %}

      {% if field.help_text %}
        <small class="form-text text-muted">{{ field.help_text }}</small>
      {% endif %}
    </div>
  {% endfor %}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...