python - Django 模板 - 如何在其他块中使用相同的块名称?
问题描述
我正在为登录和注销的用户创建一个动态页面。如果用户通过了身份验证,那么我想显示一些不同的东西而不是我的基本模板。下面是我的代码,你一定会明白的。这就是为什么我要尝试这个。如果有人知道如何在 django 中执行此任务,我们将非常感谢您的帮助。问题是,如果我在模板中的 if 条件内使用相同的块名称两次,则会抛出一个错误,即在模板中两次找到相同的块名称。有没有办法两次使用相同的块名???
{% extends 'gymwebapp/basic.html' %}
{% if not user.is_authenticated %}
{% block d-login %}
<div id="dummy-right">
<a href="{% url 'register' %}"><button class="btn">Sign Up</button></a>
<a href="{% url 'login' %}"><button class="btn">Login</button></a>
</div>
{% endblock %}
{% block login %}
<div class="right">
<a href="{% url 'register' %}"><button class="btn">Sign Up</button></a>
<a href="{% url 'login' %}"><button class="btn">Login</button></a>
</div>
{% endblock %}
{% block body %}
<section class="form-area">
<div class="form-container">
<div class="form-heading">
<h3>Login</h3>
</div>
<form action="login" method="POST">
{% csrf_token %}
<div class="form">
<input type="email" placeholder="Email" id="email" name="email" maxlength="30" required></br>
<input type="password" placeholder="Password" id="pass" name="pass" maxlength="12" required></br>
<button class="btn" id="fbtn" type="submit">Submit</button>
</div>
</form>
</div>
</section>
{% endblock %}
{% endif %}
{% if user.is_authenticated %}
{% block d-login %}
<div id="dummy-right">
<a href="{% url 'register' %}"><button class="btn">{{user.first_name}}</button></a>
<a href="{% url 'logout' %}"><button class="btn">Logout</button></a>
</div>
{% endblock %}
{% block login %}
<div class="right">
<a href="{% url 'register' %}"><button class="btn">{{user.first_name}}</button></a>
<a href="{% url 'logout' %}"><button class="btn">Logout</button></a>
</div>
{% endblock %}
{% block body %}
<section class="msg">
<ul class="messages">
<li>{{ msg }}</li>
</ul>
</section>
{% endblock %}
{% endif %}
解决方案
我认为您对某些概念感到困惑。您可以使用块来定义基础模板中的区域(块)。然后,您可以通过使用标签扩展模板来填充定义的块,{% extends %}
然后使用您在父模板中定义的块名称。使用相同的块意味着您将在第二次使用它时覆盖该块。如果您想多次使用相同的代码,您可以使用{% include %}
标签,或者将应该复制的代码放在基本/父模板中的块标签之外。
推荐阅读
- typescript - 尽管有类型保护,为什么此报告“对象可能未定义”?
- c - C错误中以字符串作为返回类型的函数:无法在内存中访问''
- java - TableLayout XML 中的 Android 拉伸项目
- vue.js - API 不可用时重定向到错误页面
- python - 使用 django 中的另一个模型对模型中的金额字段求和
- node.js - DynamoDb 获取项目键上的条件数无效
- python - 姜戈;无法在管理页面的主页注释上显示
- xml - 使用 XSL version="1.0" 对 XML 元素数求和
- git - Azure 数据工厂发布分支混乱
- html - 如何使父母与位置最高的孩子一样高:绝对和相对?