Django:在模板内编写JavaScript与加载JavaScript
我正在使用JavaScript添加注释,而不刷新页面。当我在模板内使用JavaScript时,它工作得非常好,但是如果我将JavaScript写入文件并在模板内加载文件,则它不会显示编写注释的人的姓名(它会显示注释)。下面是我在模板中使用的JavaScript:Django:在模板内编写JavaScript与加载JavaScript,javascript,django,django-templates,Javascript,Django,Django Templates,我正在使用JavaScript添加注释,而不刷新页面。当我在模板内使用JavaScript时,它工作得非常好,但是如果我将JavaScript写入文件并在模板内加载文件,则它不会显示编写注释的人的姓名(它会显示注释)。下面是我在模板中使用的JavaScript: function create_comment(event,div_id,form_id,commentinsert_id) { event.preventDefault(); var text_id = '#'.con
function create_comment(event,div_id,form_id,commentinsert_id) {
event.preventDefault();
var text_id = '#'.concat(div_id,' ','#comment-text')
var slug_id = '#'.concat(div_id,' ','#post_slug')
var appenddiv_id = '#'.concat(div_id)
comment_count ++;
var divcommentinsert_id = 'inserted_comment-'.concat(comment_count.toString())
$.ajax({
url : "create_comment/", // the endpoint
type : "POST", // http method
data : { text : $(text_id).val(), post_slug: $(slug_id).val(),},
// handle a successful response
success : function(json) {
div.innerHTML = `
<div id = `+divcommentinsert_id+` class="card-footer">
<div class="row">
<div>
<img src="{{user.profile.profile_picture.url}}" alt="" width="40" height="40">
</div>
<div class="col-md-8">
<b style="color:rgb(240, 0, 0);"> {{user.first_name}} {{user.last_name}}</b>
<br>
`+json.text+`
<a onClick="edit_comment('`+json.slug+`','`+divcommentinsert_id+`','`+json.text+`')"><i class="fa fa-edit"></i></a>
<a onClick="delete_comment('`+json.slug+`','`+divcommentinsert_id+`')"><i class="fa fa-trash-o"></i></a>
</div>
</div>
</div>`;
document.getElementById(commentinsert_id).appendChild(div);
document.getElementById(form_id).reset();
},
// handle a non-successful response
error : function(xhr,errmsg,err) {
$('#results').html("<div class='alert-box alert radius' data-alert>Oops! We have encountered an error: "+errmsg+
" <a href='#' class='close'>×</a></div>"); // add the error to the dom
console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console
}
});
};
函数create\u comment(事件、div\u id、表单\u id、commentinsert\u id){
event.preventDefault();
var text_id='#'.concat(div_id',','#comment text')
变量slug_id='#'.concat(div_id','#post_slug')
var appenddiv_id='#'.concat(div_id)
注释_count++;
var divcommentinsert_id='inserted_comment-'.concat(comment_count.toString())
$.ajax({
url:“创建注释/”,//端点
类型:“POST”//http方法
数据:{text:$(text_id).val(),post_slug:$(slug_id).val(),},
//处理成功的响应
成功:函数(json){
div.innerHTML=`
{{user.first{u name}{{user.last{u name}}
`+json.text+`
“”;//将错误添加到dom中
log(xhr.status+“:“+xhr.responseText);//向控制台提供有关错误的更多信息
}
});
};
在上面的代码中,
{{user.first{name}}{{user.last{name}}
用于显示姓名。它显示添加注释的人的姓名,但当我将相同的函数复制到comments.js文件并像
那样加载文件时,它不会显示姓名,而是显示{user.first{name}{{user.last_name}。我在几个页面中使用此javascript,我认为最好是写入文件并加载文件,而不是在每个页面中写入相同的脚本。有人能帮我吗?{dictionary.key}
,模板中的变量是如何与django模板引擎一起使用的
静态javascript文件不是模板。django模板引擎不会处理它
将所需的值放入html(通过模板引擎),从JS访问它们
基本思想:
- 创建一个JS变量(例如:
),在ajax成功回调中使用var user\u full\u name=“{{user.user\u name}}{{user.last\u name}}”
user\u full\u name
- 将值放入一些html元素(例如:
)中,并使用JS/jQuery$(“#user_name”).val()获取它
编辑:在
用户全名
声明中添加了缺少的结束双引号。{{dictionary.key}}
等模板中的变量是如何与django模板引擎一起使用的
静态javascript文件不是模板。django模板引擎不会处理它
将所需的值放入html(通过模板引擎),从JS访问它们
基本思想:
- 创建一个JS变量(例如:
),在ajax成功回调中使用var user\u full\u name=“{{user.user\u name}}{{user.last\u name}}”
user\u full\u name
- 将值放入一些html元素(例如:
)中,并使用JS/jQuery$(“#user_name”).val()获取它
user\u full\u name
声明中添加了缺少的结束双引号