【发布时间】:2021-04-11 09:32:16
【问题描述】:
好的,所以这更像是一个概念性问题。
基本上我刚刚发现我可以做到以下几点: 使用 ajax 启动一个函数,该函数返回呈现的 HTML 模板,将其作为响应发送到 ajax,然后将该 HTML 代码应用到主机 div。这感觉比使用包含标签更加通用和强大。 我可以用最少的 JS 在 Flash 中渲染和重新渲染表单(或 HTML 的任何小 sn-p),最重要的是无需刷新页面。
我知道通过 AJAX 传递整个 html 块可能不是最佳的,所以我避免滥用它。
但是这对我来说感觉很“hacky”,所以我的问题是,为什么我不应该这样做?
如果你想要一些示例代码:
{% load crispy_forms_tags %}
{% load static %}
<div id="formdiv1">
</div>
<script>
function getform_rec() {
$.ajax({
type: "GET",
url: "/backoffice/ajax/rec_form/",
success: function(data)
{
$("#formdiv1").html(data);
}
});
}
getform_rec()
</script>
我的看法
def ajax_rec_form(request):
if request.method == "GET":
rec_id = request.GET.get("id", None)
if not rec_id:
form = Rec_form()
else:
form = Rec_form(instance=Rec.objects.get(id=rec_id))
return render(request, "rec-form.html", {"rec_id": rec_id, "form": form})
rec-form.html 只是一个没有扩展或包含的 html 文件,它只是呈现表单。 是的,视图仍然不完整,它无法处理提交等。因为我想确保在继续沿着这条道路之前我没有做一些非常糟糕的事情。 哦,getform_rec() 实际上是通过按钮调用的,为了简单起见,我只是在加载时调用它。
【问题讨论】:
标签: python html django ajax django-templates