【问题标题】:Django: Referencing Views List in Java Script?Django:在 Javascript 中引用视图列表?
【发布时间】:2014-12-12 15:57:14
【问题描述】:

所以我在一个我正在玩的网站上使用 Django,并且一直在尝试研究如何在我的 views.py 中获取以下列表并能够在我的 javascript 中引用它?我正在创建一个 ajax 调用,我遇到的教程有点混乱。

#lines 6 - 8 of my code.

def catalog_home(request):
    item_list = item.objects.order_by('name')   #item is the model name

注意:项目模型包含名称、描述、概述和图标列。

我是否可以使用上面的列表 (item_list) 并能够编写一个 javascript 函数来执行类似的操作? :

$(document).ready(function() {
    $("#showmorebutton").click(function() {
    $("table").append("<tr></tr>");
    for (var i = 0; i < 3; i++) {
            var itemdescription = item.description;
            var itemName = item.name;
            var icon = item.icon;
            $("table tr:last").append(generateCard(itemName,
                                                itemdescription,
                                                icon));
    }


function generateCard(itemNameC, itemdescriptionC, iconC) {
    var card = "<td class='tablecells'><a class='tabletext' href='#'><span class='fa "
        + iconC
        + " concepticons'></span><h2 class='header'>"
        + itemNameC
        + "</h2><p>"
        + itemdescripionC
        + "<span class='fa fa-chevron-circle-right'></span></p></a></td>";
return card;
}

我并不是要众包这个问题的答案,我只是希望得到任何反馈/建议来处理这项任务,因为我对编码还很陌生。

【问题讨论】:

    标签: javascript python django


    【解决方案1】:

    您绝对应该能够做到这一点。诀窍是理解 Django 模板。您显示了视图的一部分,但您需要渲染到模板。在模板中,您可以执行类似的操作

    HTML code for page goes here (if you're mixing js and html)
    <script>
      var items = [{% for d in data %}
    {% if forloop.last %}
        {{ d }}
    {% else %}
        {{ d }},
    {% endif %}
    {% endfor %}];
      // code that uses items
    </script>
    

    请注意,需要做一些工作来确保您有正确的逗号 # [取自 this SO answer,并且您的代码应该处理数组为空的情况。

    或者,您可以使用 django rest 框架之类的东西从静态 javascript 到 django 服务器进行 ajax 调用,以将项目列表作为 json 对象获取。

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 2020-07-15
      • 1970-01-01
      • 2015-12-11
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多