Django:在Javascript中引用视图列表?

时间:2014-12-12 15:57:15

标签: javascript python django

所以我正在和我正在玩的网站上使用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;
}

我不是故意要找到答案,我很感激任何反馈/建议让我来处理这项任务,因为我对编码很新。

1 个答案:

答案 0 :(得分:0)

你绝对应该能够做到这一点。诀窍是了解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 framework之类的东西从静态javascript到django服务器进行ajax调用,以获取项目列表作为json对象。