gpt4 book ai didi

python - Django 1.9.3 - 如何将 HTML 模板传递给索引模板

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:04 24 4
gpt4 key购买 nike

因此,我有索引模板,其中有一个使用 Django 模板语言创建表(使用 for)的表。

如何使用 AJAX 将同一个表(即使使用 Django 模板代码)传递给索引模板?我已经添加了 AJAX 部分并且它可以工作,但是没有解释 DJango 代码并且没有构建表格。

基本上,我想:

  • 在"template"中分离各个 DOM 组件,因此我可以根据需要通过 AJAX 推送到主(索引)模板。请记住,这些"template"应包含 Django 代码,如 {% for item in data %}

例如:

从 View :

def getDetails(request):
var = "{% if 10 > 5 %}<h1>TRUE</h1>{% endif %}"
return HttpResponse(
json.dumps(var),
content_type="application/json"
)

index.html:

function getDetails() {
$.ajax({
url : "getDetails/",
type : "POST",
data : { getDetails : $('#postValue').val() },

success : function(json) {
$('#postValue').val('');
$("#tableDetails").html(json)

<div id="tableDetails"></div>

浏览器显示的内容:

{% if 10 > 5 %}
TRUE
{% endif %}

最佳答案

问题是这段代码:

def getDetails(request):
var = "{% if 10 > 5 %}<h1>TRUE</h1>{% endif %}"
return HttpResponse(
json.dumps(var),
content_type="application/json"
)

实际上只是将该模板代码放入一个字符串中并将其作为 JSON 对象发送。模板代码绝不会转换为 HTML 字符串。

根据您的评论,您暗示服务器不解释模板代码,但这是不正确的! Django 的默认 View 肯​​定会涉及。

您可以使用模板类自己进行这种解释。

试试下面的代码:

from django.template import Context, Template
template = Template("{% if 10 > 5 %}<h1>{{ value }}</h1>{% endif %}")

def getDetails(request):
context = Context({"value": "TRUE"})
output = template.render(context)
return HttpResponse(
json.dumps(output),
content_type="application/json"
)

以上例子,改编自the Django 1.9 documentation ,以编程方式演示如何使用模板,以及如何使用上下文对象提供附加信息。


也许更好的选择是将您的模板代码留在某个部分模板文件中。例如,假设您创建了包含以下模板代码的 table.html:

<table>
{% for item in items %}
<tr><td>{{ item }}</td></tr>
{% endfor %}
</table>

然后你可以按如下方式加载和渲染它:

from django.template.loader import render_to_string

def getDetails(request):
table_rows = ['item 1', 'item 2', 'item 3']
output = render_to_string("table.html", {"items": table_rows})
return HttpResponse(
json.dumps(output),
content_type="application/json"
)

调用 render_to_string 将从 table.html 加载模板代码,并使用提供的字典动态创建上下文。在这种情况下,上下文中的 items 条目设置为一个数组,以便 {% for %} 标记可以循环遍历它。

关于python - Django 1.9.3 - 如何将 HTML 模板传递给索引模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35764108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com