Django Ajax请求问题,在我的temp中返回数据

2024-07-01 07:34:07 发布

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

在我的django项目中,我对动态显示和填充字段进行了ajax调用。 首先,在我的模板中创建元素:

模板html

<select class="form-control" onChange="AddOptions(this);">
    {% for entry in all_test %}
        <option id="mainID" value="{{ entry.id }}">{{ entry.descr }}</option>
    {% endfor %}
</select>
<div id = "div_val" class="input-group" style="display: none;">
                <div class="input-group-btn">
                  <button id = "btn_val" type="button" class="btn btn-danger">Test</button>
                </div><!-- /btn-group -->
                <input type="text" class="form-control">
              </div>

在我的js里:

开始.js

function AddOptions(VarID) {
$.ajax({
    type: "POST",
    url: "ajax",
    data: {mainID: VarID.value},
    success: function (data) {
        $.each(data, function (index) {
            $("#div_val").show();
            console.log("Key: " + data[index].OptionKey+" Val: "+ data[index].OptionVal)
        });
    }
});
}

url.py

url(r'^ajax$', mainoptions),

最后,我的python函数从url.py调用:

from frontend.models import temp_main, temp_case, temp_variables


def mainoptions(request):
    if request.is_ajax():
        mainOptions = temp_variables.objects.filter(main_id=int(request.POST['mainID']))
        response = []
        for i in mainOptions:
            vallabel = {}
            vallabel['OptionID'] = i.id
            vallabel['OptionKey'] = i.v_key
            vallabel['OptionVal'] = i.v_val
            response.append(vallabel)
        json = simplejson.dumps(response)
        return HttpResponse(
        json, content_type='application/json'
        )
    else:
       pass

所有这些都完成了,我在模板中隐藏的div“div\u val”被显示出来了,但是现在我不明白如何在模板中使用返回的数据,例如,填充div中元素的值(而不是在js func中使用jquery来完成它)。 如何关闭链模板->;js->;URL->;查看方法->;模板

非常感谢


Tags: gtdiv模板idurldatatypejs
1条回答
网友
1楼 · 发布于 2024-07-01 07:34:07

当您使用服务器端呈现时,您不能像关闭引用的“链”那样容易。这是因为Django在本例中所做的是在一个初始响应中提供所有HTML和JS(至少是HTML视图中的JS)。在此之后执行的ajax请求将不会绑定到最初在响应中发送的变量,因为这些变量是在调用render()函数时填充的。在此之后,您将无法添加或更新发送到HTML模板的变量

管理呈现HTML小部分的唯一方法是使用JQuery,或者使用Django REST框架使后端成为restapi,然后转向更完整的前端框架,比如Angular或React。关于服务器端渲染和客户端渲染有很多讨论

您可以在此处阅读更多信息:

https://medium.com/@adamzerner/client-side-rendering-vs-server-side-rendering-a32d2cf3bfcc

相关问题 更多 >

    热门问题