如何将函数结果传递给模板?

时间:2017-10-24 14:16:38

标签: python django templates

我正在研究django项目,我遇到了一个问题: 我想将函数的结果传递给动态模板。

def liste_ebauche(request):
    if not request.is_ajax() and not request.method == 'GET':
            raise Http404
    try:

            param_json = None
            param = request.GET 

            for json_liste_eb in param:
                    param_json= json.loads(json_liste_eb)

            of_select= param_json['numof'] 

            reponse= {}
            reponse_json= {}
            reb={}
            c=connection.cursor()
            c.execute("BEGIN")
            c.callproc("p_web_get_ebauche",[of_select])
            ebauches=c.fetchall()
            c.execute("COMMIT")
            c.close()

             html = render_to_string("paquet/ss_ebauche.html", locals())
    except Exception as e:
            logger.warning("error :" + e.message)
    return HttpResponse(html)

在我正在做的模板中:

{% for ebauche in ebauches %}
        <tr style="text-align:center">
                <td class="id_ss_ebauche" style="display:none;">{{forloop.counter}}</td>
                <td class="case">{{ebauche.ebauche}}</td>
                <td class="case">{{ebauche.type}}</td>
                <td class="case">{{ebauche.longueur}}</td>
                <td class="case">{{ebauche.ligne}}</td>
        </tr>
{% endfor %}

如果我传输查询集但没有结果函数,那就没问题。 如何调整结果函数以传输到我的模板? 请帮帮我。

2 个答案:

答案 0 :(得分:0)

您还没有显示ebauches变量的内容。您可以在视图中ebauches=c.fetchall()之后打印或记录它来检查。

如果它是元组列表,那么您必须将结果转换为字典,或者更改模板以通过索引访问变量:

{% for ebauche in ebauches %}{{ ebauche.0 }}, {{ ebauche.1 }}{% endfor %}

答案 1 :(得分:0)

好的,我发现了我的问题。它是一个ajax请求,响应视图不能成为HTML链接。响应通过我的请求ajax的函数成功传递。