我有以下模板:
{% extends "account/base.html" %}
{% load i18n %}
{% load account %}
{% load crispy_forms_tags %}
{% block head_title %}{% trans "Password Reset" %}{% endblock %}
{% block content %}
<div class="container">
<div class="row justify-content-center">
<div class="col-8">
<h1>Reset your password</h1>
{% if user.is_authenticated %}
{% include "account/snippets/already_logged_in.html" %}
{% endif %}
<p>{% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}</p>
<form method="POST" action="{% url 'account_reset_password' %}" class="password_reset">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary">Reset My Password</button>
</form>
<p><em>{% blocktrans %}Please contact us if you have any trouble resetting your password.{% endblocktrans %}</em></p>
</div>
</div>
</div>
{% endblock %}
account / base.html包含此内容:
{% extends "base.html" %}
base.html然后包含标签等。我正在努力寻找最佳解决方案,同时考虑DRY。在我的模板中,我写道:
<div class="container">
<div class="row justify-content-center">
<div class="col-8">
[more text]
</div>
</div>
</div>
我有几个这样的模板,而且每个模板我都在编写相同的内容......我现在想知道将这些打开/关闭div-tags包含在两个文件中然后添加
的正确解决方案{% include "div-open.html" %}
[more text]
{% include "div-closing.html" %}
或者有更好的解决方案吗?这感觉不对,这就是为什么我现在问你如何解决这个问题。
答案 0 :(得分:0)
我依赖于HTML重复是否应被视为DRY违规。我要包含自定义表单字段,而不是{% include 'simple_custom_field.html' with field=form.some_fied %}
其中
<强> simple_custom_field.html 强>
<input
type="{{ field.field.widget.input_type }}"
class="form-control {{ field.field.widget.attrs.class }} {{ class }}"
id="{{ field.id_for_label }}"
name="{{ field.html_name }}"
placeholder="{{ field.label }}"
{% if field.value is not None %} value="{{ field.value }}"{% endif %}>
或者那样......
是个好主意,或者如果您在多个文件中有长块或单独的HTML块,那么您也可以像这样呈现整个表单,然后去实现它。但它包含HTML的简单和基本部分是个坏主意。 程序员应该是透明的。
如果你想以另一种方式做,有办法如何添加自定义模板标签和&#34;修改&#34;您编写模板的语言。 以下是文档如何执行此操作:Writing custom template tags | Django docs