django - 模板标签模板中的 Django 模板块
问题描述
我有一个名为 base.html 的模板。这个模板在 jQuery 加载后在底部包含一个名为 pagescripts 的块,如下所示:
<div class="container-fluid">
{% block content %}
{% endblock %}
</div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
<script defer src="https://use.fontawesome.com/releases/v5.0.10/js/all.js" integrity="sha384-slN8GvtUJGnv6ca26v8EzVaR9DC58QEwsIk9q1QXdCU8Yu8ck/tL/5szYlBbqmS+" crossorigin="anonymous"></script>
{% block pagescripts %}
{% endblock %}
接下来,我有一个模板标签,它是一个包含标签,用于显示特定新闻文章的精美 boostrap 4 卡片,如下所示:
@register.inclusion_tag('long_article_card.html', takes_context=True)
def show_long_card(context, article):
try:
contextForm = context['form']
except KeyError:
contextForm = None
return {'article':article, 'form': contextForm}
现在,在 long_article_card.html 中,我想从 base.html 向 pagescripts 块添加一个脚本。所以,在 long_article_card.html 中,我有这个:
<div class="target">TARGET HERE</div>
<a class="dropdown-item" id="lean-vote-xl" href="#">Extreme Left</a>
{% block pagescripts %}
<script>
$(document).ready(function(){
$("#lean-vote-xl").on('click', function(){
$.ajax({
url:'/webproxy/v/?i=a&pk={{article.id}}&t=1&v=3',
type:'get',
dataType:'html',
crossDomain:true,
success:function(data)
{
var outputCard = "<div class=\"target\"><br><h2>That worked</h2></div>";
$(".target").html(outputCard);
},
error: function(data) {
var outputCard = "<div class=\"target\"><br><h2>Load Error</h2></div>";
$(".target").html(outputCard);
}
});
}); // end id_url_text
});
</script>
{% endblock %}
然后从名为 article/detail.html 的文章详细信息模板调用该模板标签,该模板扩展了 base.html。
{% extends 'base/base.html' %}
<div class="row">
{% show_long_card article %}
</div>
但这会导致 long_article_card.html 中的 javascript 在 long_article_card.html 的末尾呈现,这意味着它是在页面底部加载 jQuery 之前呈现的,因此该脚本不起作用,因为尚未定义 $。我需要做的是让 long_article_card.html 中的块页面脚本呈现在页面的最底部,基本上是在 base.html 的底部。我需要 django 从 long_article_card.html 中获取块 pagescripts,将其传递给 article/detail.html,然后 article/detail.html 将其传递给 base.html,然后 base.html 将它包含在它的 pagescripts 块中在加载 jQuery 后位于 base.html 的最底部。
我不能让 long_article_card.html 扩展 article/detail.html,因为它会导致递归错误。long_article_card.html 有没有办法向 base.html 的 pagescripts 块添加内容?
谢谢你。
解决方案
django-sekizai就是为这个用例而构建的。它可能对你有用
推荐阅读
- postgresql - 对 UPDATE FROM 语法的误解
- javascript - 获取多维数组的值(Node.js / JavaScript)
- sql - 如何在具有 4 个表的复杂 sql 中获得正确的 SQL 结果
- selenium - moveToElement 和 scrollToView 功能在 Chrome 浏览器中不起作用
- java - 将数据从 ArrayAdapter 发送到 MainActivity 而不更新 MainActivity
- laravel - Laravel 资源 - 访问用户
- mysql - 根据“父”表的主键从关系表中选择所有记录作为数组
- unity3d - Direct3D 计算着色器的运行速度比 Unity 计算着色器慢 15 倍
- c# - 为什么捕获 AggregateException 会导致 CA2000 处理警告?
- abap - 数据声明中的 % 符号是什么意思?