【发布时间】:2018-08-19 19:43:54
【问题描述】:
我有一个模板如下:-
<div class= "comment-form m-2">
{% include "includes/comment_reply_form.html" %}</div>
如果用户通过身份验证,则 html 会显示表单。但是,如果用户未登录,我想显示一个登录按钮。我正在通过以下javascript处理相同的事情。
$(".comment-reply-btn").click(function(event){
event.preventDefault();
if (user_is_authenticated === false) {
$(".comment-form").html('{% include "includes/reply.html" %}');
$(this).parent().next(".comment-reply").fadeToggle();
}
else {
$(this).parent().next(".comment-reply").fadeToggle();
}
});
但是,它不是在 reply.html 中包含 html,而是在网页中显示 {% include "includes/reply.html" %}。 javascript没有问题,如果我添加
<p> You need to Login </p>
在下一行。它工作正常:-
$(".comment-form").html('{% include "includes/reply.html" %}');
但由于我的reply.html 中需要更多选项,因此我想将其添加为包含。我尝试在 { 前面使用转义字符“/”,但没有帮助。
【问题讨论】:
-
那么问题在于:如果
{% include ... %}呈现一个引号 ('),那么字符串就会停止(根据 JavaScript),那么我们就遇到了真正的麻烦。 -
但它在 html 中显示 {% include "includes/reply.html" %},但 html 没有选择它,因为 django 模板可能是 javascript 将其添加为 "{% include "包括/reply.html" %} "
-
这个 JavaScript in 是模板,还是“静态”.js 文件。 Django 模板在服务器端呈现,所以在客户端,
{% include ... %}完全没有意义... -
它在我的 base.js 文件中。正如我所提到的,如果我在我的 javascript 中用一个简单的段落标记替换 include 语句,它就可以正常工作。
-
当然可以正常工作,因为如前所述,Django 引擎不会解释
base.js。 client 看到这个{% include %}标签,因此不会替换它,因为浏览器无法读取 Django 模板语言(即使它可以,它也无法访问模板、文件、模型,视图等)
标签: javascript html django django-templates