使用jinja2调用python方法对客户端没有影响

2024-10-02 00:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模板页面,当用户访问url(http://mysite/new_device)时显示它

    config.add_route('new_device', '/new_device')

在视图.py方法:

^{pr2}$

当我转到该链接时,页面将正确显示,jinja2打印在python方法的return语句中传递的所有数组和字典。在

在我的页面上,我有一个select标记,它有一组用户可以选择的选项(Transformer、switcher等),它将根据所选的选项加载字段(ajax调用获取数据)。我要做的是使用jquery和ajax加载适当的字段,方法是检查我所拥有的select上的更改,获得id,然后对python方法new_device进行ajax调用。在

$("#deviceTypes").change(function () {
    var deviceTypeID = $(this).val();

    var data = {
        "deviceTypeID": deviceTypeID
    }

    $.ajax({
        url: "http://127.0.0.1:6543/new_device",
        type: "POST",
        data: JSON.stringify(data),
        contentType: 'application/json; charset=utf-8',
        success: function (response, textStatus, jqXHR) {
        },
        error: function (jqXHR, textStatus, errorThrown) {
            //change this back to error throwing after wards
            alert("error");
        }
    });
});

我遇到的问题是数据是从方法返回的,但是客户端没有用新的信息进行更新。在

这是我的html页面的一个片段

    <select id="deviceTypes" class="inputBoxes">
        {% for key, value in deviceTypes.iteritems() %}
        <option value="{{key}}">{{value}}</option>
        {% endfor %}
    </select>

    <br />
    {% for sec in sections %}
        <label class="inputBoxLabels">{{sec}}</label><br />
    {% endfor %}

换句话说,这里的jinja2没有打印新返回的信息。它只能在初始加载时访问一次数据吗?这是如何工作的?在


Tags: 方法用户httpurlnewdatavaluedevice
2条回答

经过一番考虑,我想出了一个解决办法。 在我的url中,我只添加了一个deviceTypeID参数

config.add_route('new_device', '/new_device/{deviceTypeID}')

然后,每当用户从列表中选择一个选项时,我只需将页面重定向到该id,然后加载他从python方法返回的新数据

^{pr2}$

我不是python或jinja2开发人员,但从您的解释来看,您似乎希望用AJAX调用的数据填充deviceTypes下拉列表。为此,您需要在Success handler中添加DOM操作的逻辑。在

$.ajax({
        url: "http://127.0.0.1:6543/new_device",
        type: "POST",
        data: JSON.stringify(data),
        contentType: 'application/json; charset=utf-8',
        success: function (data) {

               var options = $("#deviceTypes");
               $.each(data, function() {
                       options.append(new Option(this.key, this.value));
               });
        },

您可以参考下面的链接在python中创建JSON数据。在

How to populate a dropdownlist with json data in jquery?

相关问题 更多 >

    热门问题