如何将Jinja变量发送到Django View

时间:2017-10-15 11:00:26

标签: javascript jquery ajax django jinja2

我在HTML中有一个视图,它显示一个带有与会者的表格列表;

        <table>
            {% for people in Attendees %}
            <tr>
                <td>{{ people.id }}</td>
                <td>{{ people.name }}</td>
                <td>
                   <a id='deleteAttendeeButton' class="btn btn-primary btn-xs">Delete</a>
                </td>
            </tr>
            {% endfor %}
        </table>

该表有一个所有条目的删除按钮,点击后,我正在使用AJAX进行GET请求,如下所示;

$("#deleteAttendeeButton").on("click", function () {
        $.ajax({
            url: '/modifyAttendee/?id={{ people.id }}',
            type: 'GET',
        })
});

我想使用AJAX发送people.ID变量进行查看,以便视图可以确定要在数据库中删除的对象。然而,问题是我似乎无法传递AJAX中的jinja变量。

我在AJAX声明中遗漏了什么?如果没有,那么什么是理想的解决方案?

注意:我不想在按钮中使用'href',因为我不想重新加载页面。

1 个答案:

答案 0 :(得分:0)

嗯,它不是那样的。模板标记在渲染时进行评估,但您需要单击的元素的ID。您可以使用data元素来保存ID并将其恢复到JS中。

这里还有其他一些问题;特别是,HTML元素ID必须是唯一的,但是你对循环中的每个链接都使用相同的元素。你应该使用一个类。

<a class='deleteAttendeeButton btn btn-primary btn-xs' data-people_id="{{ people.id }}">Delete</a>

...

$(".deleteAttendeeButton").on("click", function () {
    var people_id = $(this).data('people_id');
    $.ajax({
        url: '/modifyAttendee/?id=' + people_id,
        type: 'GET',
    })

(注意,除非你专门配置它,否则Django不使用Jinja;这几乎可以肯定是Django模板语言类似但不一样。但它不会影响你的问题。)