Как остановить Django Форма ввода пароля PasswordInput - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать форму django, чтобы пользователи могли войти в систему.

forms.py

class LoginForm(forms.ModelForm):
    username = forms.CharField(label='User name', max_length=30)
    password = forms.PasswordInput()

    class Meta:
        model = User
        fields = '__all__'    
        widgets = {'password': forms.PasswordInput()}

views.py

def login_view(request):
    form_context = {'login_form': LoginForm,}
    url = "users/login.html"
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        ...
    else:
        context = form_context
    return render(request, url, context)

логин. html

<form method="post" action="{% url 'login' %}">
{% csrf_token %}
    <table>
        <tr>
            <td>{{ login_form.username.label_tag }}</td>
            <td>{{ login_form.username }}</td>
            <td rowspan="2"><button type="submit" class="btn btn-success">Login</button></td>
        </tr>
        <tr>
            <td>{{ login_form.password.label_tag }}</td>
            <td>{{ login_form.password }}</td>
        </tr>
    </table>
</form>

У меня проблема в том, что если строка

widgets = {'password': forms.PasswordInput()}

Если вы используете, то форма предварительно заполняется именем пользователя и паролем

Если строка закомментирована, форма не заполняется заранее, а пароль в виде простого текста.

Что не так здесь

1 Ответ

1 голос
/ 03 апреля 2020

Вам просто нужно отключить автозаполнение:

password = forms.PasswordInput(widget=forms.TextInput(attrs={'autocomplete':'off'}))

или отключить его для формы:

<form method="post" action="{% url 'login' %}" autocomplete="off">
...