Django 模板输入表单字段上的占位符问题
Problem with placeholder on a django template input form field
我正在使用默认的 django 身份验证系统创建用户登录。
使用 bootstrap 模板,我正在创建一个带有自定义字段的表单,它们工作正常。
问题是在显示此表单时,它呈现的是值属性而不是我传递给它的占位符。
这是它的样子:
login page
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)
发送到值属性。表单字段的 __str__
方法呈现 HTML。这就是为什么你看到你所看到的。
要解决此问题,您可以放置 {{ form.username.initial }}
以显示字段的初始值。
提示:尝试使用 crispy forms 来呈现表单。它更简单,并且使语法更紧凑,这取决于表单代码,而不是 HTML。参见 https://django-crispy-forms.readthedocs.io/en/latest/
另一件事,我认为您在输入字段中遗漏了 name
属性。不确定没有它是否有效。
我正在使用默认的 django 身份验证系统创建用户登录。
使用 bootstrap 模板,我正在创建一个带有自定义字段的表单,它们工作正常。
问题是在显示此表单时,它呈现的是值属性而不是我传递给它的占位符。
这是它的样子: login page
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)
发送到值属性。表单字段的 __str__
方法呈现 HTML。这就是为什么你看到你所看到的。
要解决此问题,您可以放置 {{ form.username.initial }}
以显示字段的初始值。
提示:尝试使用 crispy forms 来呈现表单。它更简单,并且使语法更紧凑,这取决于表单代码,而不是 HTML。参见 https://django-crispy-forms.readthedocs.io/en/latest/
另一件事,我认为您在输入字段中遗漏了 name
属性。不确定没有它是否有效。