Проблема с заполнением поля формы ввода шаблона django
Я создаю логин пользователя, используя стандартную систему аутентификации django.
Используя шаблон bootstrap, я создаю форму с пользовательскими полями, и они работают правильно.
Проблема в том, что при отображении этой формы, она показывает атрибут value вместо placeholder, который я передал ей.
Вот как это выглядит: страница входа
login.html
<form method="post" action="{% url 'login' %}"> {% csrf_token %}
<img class="mb-4" src="{% static 'images/logo.jpg' %}" alt="" width="100" height="100">
<h1 class="h3 mb-3 fw-normal">Please sign in</h1>
<div class="form-floating">
<input type="text" class="form-control" id="floatingInput" placeholder="name@example.com"
value="{{form.username}}">
<label for="floatingInput">Username</label>
</div>
<div class="form-floating">
<input type="password" class="form-control" id="floatingPassword" placeholder="Password"
value="{{form.password}}">
<label for="floatingPassword">Password</label>
</div>
<div class="checkbox mb-3">
<label>
<input type="checkbox" value="remember-me"> Remember me   <a href="{% url 'password_reset' %}">
Lost password?</a>
</label>
</div>
<button class="w-100 btn btn-lg btn-primary" type="submit">Sign in</button>
<p class="mt-5 mb-3 text-muted">© 2022 all rights deserved</p>
</form>
При использовании {{ form.username }} вы отправляете str(form.username) в атрибут value. Метод __str__ в поле формы отображает HTML. Вот почему вы видите то, что видите.
Чтобы исправить это, вы можете поместить {{ form.username.initial }} для отображения начального значения поля.
Совет: попробуйте использовать crispy forms для рендеринга форм. Это намного проще и делает более компактный синтаксис, который зависит от кода формы, а не от HTML. См. https://django-crispy-forms.readthedocs.io/en/latest/
Другое дело, я думаю, что вам не хватает атрибута name для полей ввода. Не уверен, что это работает без него.