Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django 1.9.3-如何将HTML模板传递给索引模板_Python_Ajax_Django_Templates - Fatal编程技术网

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

Python Django 1.9.3-如何将HTML模板传递给索引模板,python,ajax,django,templates,Python,Ajax,Django,Templates,因此,我有索引模板,其中有一个使用Django模板语言创建表的表(使用for) 如何使用AJAX将相同的表(即使使用Django模板代码)传递给索引模板?我已经添加了AJAX部分,它可以工作,但是DJango代码没有被解释,表也没有被构造 基本上,我想: 在“模板”中分离各个DOM组件,以便根据需要通过AJAX推送到主(索引)模板。请记住,这些“模板”应该包含Django代码,如{%for data%} 例如: 从这个角度来看: def getDetails(request): var =

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

如何使用AJAX将相同的表(即使使用Django模板代码)传递给索引模板?我已经添加了AJAX部分,它可以工作,但是DJango代码没有被解释,表也没有被构造

基本上,我想:

  • 在“模板”中分离各个DOM组件,以便根据需要通过AJAX推送到主(索引)模板。请记住,这些“模板”应该包含Django代码,如
    {%for data%}
例如:

从这个角度来看:

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

问题在于此代码:

def getDetails(request):
  var = "{% if 10 > 5 %}<h1>TRUE</h1>{% endif %}"
  return HttpResponse(
    json.dumps(var),
    content_type="application/json"
  )
然后可以按如下方式加载和渲染它:

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
加载模板代码,并使用提供的dict动态创建上下文。在这种情况下,上下文中的
项设置为数组,以便
{%for%}
标记可以循环通过它

你需要提供更多的细节。为什么不能在响应Ajax调用的视图中呈现模板片段?为什么不想在那里传递任何上下文呢?我可以传递包含HTML表的上下文。问题是,要创建表,当索引模板接收到表时,我使用的是模板语言(因为它非常简单),它会呈现所有内容,包括{%for items in collection%}。所以服务器没有解释Python代码,但这并没有回答我的问题:为什么不能像在其他视图中一样在Ajax视图中呈现模板?也许你应该展示这个视图的完整代码,我确实做了。我可以做,但它确实包含了{{}标记。
def getDetails(request):
  var = "{% if 10 > 5 %}<h1>TRUE</h1>{% endif %}"
  return HttpResponse(
    json.dumps(var),
    content_type="application/json"
  )
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"
  )
<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"
  )