用 django 模板语言实现 javascript

Posted

技术标签:

【中文标题】用 django 模板语言实现 javascript【英文标题】:implement javascript in django templates language 【发布时间】:2012-11-29 22:18:48 【问题描述】:
% with JSONContent as object %% include "_comments.html" %% endwith %

JSONContent 是我通过$.get() 方法获得的 django 模型实例。 “_cmets.html”是 cmets 的未渲染模板。 我想渲染该模板,并通过 AJAX 将其发送到客户端(因此,revieved 数据是模板中渲染的 HTML) 我该怎么做?

【参考方案1】:

听起来您正在从 ajax 请求到服务器获取模型的实例,并且您想在“_cmets.html”模板中使用该实例。那正确吗?如果是这样,您可以改为在服务器上呈现模板并在 ajax 请求中获取呈现的 HTML。

因此,假设您有一个名为 fetch_new_comments 的视图来处理 ajax 请求。视图可能看起来像这样,而不是获取评论模型并将其转储到 JSON 并返回它:

def fetch_new_comments(request):
  comments = ... # get whatever data you're using
  return render_to_response("_comments.html", "comments": comments)

所以这意味着您的 ajax 请求将收到一大块 HTML(而不是 JSON 对象),并将其插入页面。如果你使用 jQuery,你可以这样做:

$.get("http://yoursite.com/fetch_new_comments/", function (resp) 
  $("#new_comments_container").html(resp);
);

【讨论】:

但如何编译 html 并将其应用于“cmets”? 对不起,我不明白你的意思。 ajax 请求向服务器发送新 cmets 的请求,这会导致执行fetch_new_comments 视图。 fetch_new_comments 从数据库中获取一些数据,将其存储在 comments 变量中,并呈现可以访问 comments 变量的模板 (_cmets.html)。呈现的模板是 HTML 块,作为 ajax 请求的结果返回,然后发出 ajax 请求的 javascript 代码将这块 HTML 插入页面。 也许如果您仍然感到困惑,您可以展示 _cmets.html 模板以及如何获得您在问题中提到的JSONContent 我已经改变了问题,希望现在已经清楚了,感谢您的宝贵时间! 对不起,我不明白为什么我的回答不能回答你的问题。当您致电$.get 时,请求是否会发送到属于您网站一部分的 URL?如果是这样,URL 应该返回呈现的模板,而不仅仅是 JSON 形式的数据。您的更多代码会有所帮助,例如调用 $.get 的 Javascript 和返回 JSON 对象的视图。

以上是关于用 django 模板语言实现 javascript的主要内容,如果未能解决你的问题,请参考以下文章

django+javascrip的疑问一

你能用其他变量访问 django 模板语言中的变量属性吗?

是否有几乎类似于 Django 模板语言的 PHP 模板语言?

Django 2021年最新版教程26模板语言 前端if判断怎么用 实例

Django模板语言

Django模板语言相关内容