gpt4 book ai didi

javascript - Django Ajax 请求与我的模板中返回的数据有关

转载 作者:行者123 更新时间:2023-12-03 04:02:33 25 4
gpt4 key购买 nike

在我的 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中:

start.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)
});
}
});
}

urls.py

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

最后我的 python 函数从 urls.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_val”已显示,但现在我不明白如何在模板中使用返回的数据,例如,填充div内元素的值(无需在我的 js 函数中使用 jquery 来执行此操作)。如何关闭模板 -> js -> urls -> 查看方法 -> 模板链?

提前非常感谢

最佳答案

当您使用服务器端渲染时,您无法轻松关闭您所指的“链”。这是因为 Django 在这种情况下所做的是在单个初始响应中提供所有 HTML 和 JS(至少是 HTML View 中的 JS)。之后执行的 ajax 请求不会绑定(bind)到您最初在响应中发送的变量,因为这些变量是在调用 render() 函数时填充的。此后,您将无法添加或更新发送到 HTML 模板的变量。

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

您可以在这里阅读更多相关信息:

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

关于javascript - Django Ajax 请求与我的模板中返回的数据有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com