如何使用 widget_tweaks 自定义 django 注册表单的帮助文本?
How to customize django signup form's helper texts with widget_tweaks?
我正在尝试创建一个注册页面并在尝试时使用 Django 的默认注册表单。我对密码字段的帮助文本有疑问,因为我无法修复它。
这是我的 signup.html 的 body;
<body class="text-center">
<form class="form-signin" method="POST">
{% csrf_token %}
<h1 class="h3 mb-3 font-weight-normal">Sign up</h1>
{% for field in form %}
<label for="{{ field.id_for_label_tag }}">{{ field.label_tag }}</label>
{{ field | add_class:'form-control' }}
{% for text in field %}
<small style="color: grey">{{ field.help_text }}</small></br></br>
{% endfor %}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% endfor %}
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
</form>
</body>
这是页面的屏幕截图;
这也是另一个link的截图(如果打不开上面那个):https://prnt.sc/kcsmaf
正如我在屏幕截图中用红色箭头显示的那样,ul
和 li
标签存在问题。它们不受样式的影响。我该如何解决?
默认情况下 Django 转义 变量的内容。例如 <li>
因为字符串被呈现为 <li>
。这是经常需要的行为:假设用户写了一个像 'o(><)o'
这样的评论,那么你可能不想将其解释为 HTML,因为这可能意味着浏览器无法再解析其余部分文档。
但是您可以标记一个变量,使其不使用safe
[Django-doc]模板过滤器进行转义:
<body class="text-center">
<form class="form-signin" method="POST">
{% csrf_token %}
<h1 class="h3 mb-3 font-weight-normal">Sign up</h1>
{% for field in form %}
<label for="{{ field.id_for_label_tag }}">{{ field.label_tag }}</label>
{{ field | add_class:'form-control' }}
{% for text in field %}
<small style="color: grey">{{ field.help_text<b>|safe</b> }}</small></br></br>
{% endfor %}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% endfor %}
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
</form>
</body>
在那种情况下,如果 help_text
例如包含一个 <li>
,它将呈现为 HTML,因此浏览器可以将其呈现为列表。
但是请注意,如果您将某些内容标记为 safe
,那么您应对它包含 有效 HTML 的事实负责,因此例如标签适当关闭等
我正在尝试创建一个注册页面并在尝试时使用 Django 的默认注册表单。我对密码字段的帮助文本有疑问,因为我无法修复它。
这是我的 signup.html 的 body;
<body class="text-center">
<form class="form-signin" method="POST">
{% csrf_token %}
<h1 class="h3 mb-3 font-weight-normal">Sign up</h1>
{% for field in form %}
<label for="{{ field.id_for_label_tag }}">{{ field.label_tag }}</label>
{{ field | add_class:'form-control' }}
{% for text in field %}
<small style="color: grey">{{ field.help_text }}</small></br></br>
{% endfor %}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% endfor %}
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
</form>
</body>
这是页面的屏幕截图;
这也是另一个link的截图(如果打不开上面那个):https://prnt.sc/kcsmaf
正如我在屏幕截图中用红色箭头显示的那样,ul
和 li
标签存在问题。它们不受样式的影响。我该如何解决?
默认情况下 Django 转义 变量的内容。例如 <li>
因为字符串被呈现为 <li>
。这是经常需要的行为:假设用户写了一个像 'o(><)o'
这样的评论,那么你可能不想将其解释为 HTML,因为这可能意味着浏览器无法再解析其余部分文档。
但是您可以标记一个变量,使其不使用safe
[Django-doc]模板过滤器进行转义:
<body class="text-center">
<form class="form-signin" method="POST">
{% csrf_token %}
<h1 class="h3 mb-3 font-weight-normal">Sign up</h1>
{% for field in form %}
<label for="{{ field.id_for_label_tag }}">{{ field.label_tag }}</label>
{{ field | add_class:'form-control' }}
{% for text in field %}
<small style="color: grey">{{ field.help_text<b>|safe</b> }}</small></br></br>
{% endfor %}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
{% endfor %}
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
</form>
</body>
在那种情况下,如果 help_text
例如包含一个 <li>
,它将呈现为 HTML,因此浏览器可以将其呈现为列表。
但是请注意,如果您将某些内容标记为 safe
,那么您应对它包含 有效 HTML 的事实负责,因此例如标签适当关闭等