【发布时间】:2021-08-12 09:04:40
【问题描述】:
我需要创建一个包含 5 个选择字段的表单,每个字段都依赖于前一个字段(学校、学科、宏观内容、微观内容、教师)
我只能让一个工作,将 Ajax 视图传递给表单 div:
<form action="" id="orderForm" method="POST" discipline-queries-url="{% url 'ajax-load-discipline' %}>
和
<script src="//code.jquery.com/jquery-3.6.0.js"></script>
<script>
$("#institute").change(function () {
const url = $("#orderForm").attr("discipline-queries-url");
const instituteId = $(this).val();
$.ajax({
url: url,
data: {
'institute_id': instituteId
},
success: function (data) {
$("#discipline").html(data);
}
});
});
</script>
据我了解,我需要 4 个不同的 ajax 视图,每个数据库查询一个,并通过 modelform 属性传递 url 属性,如下所示:
'discipline': forms.Select(attrs={'id': 'discipline', 'class': 'form-control',
'discipline-queries-url': '{% url "ajax-load-discipline" %}'}),
但特殊字符正在转义并返回如下内容:
"GET /order/create/%7B%%20url%20%22ajax-load-discipline%22%20%%7D?institute_id=1 HTTP/1.1" 404 13568
所以它正在将 {% url "ajax-load-discipline" %} 传递给 url...
知道我可以做些什么来传递正确的参数吗?
【问题讨论】:
-
好的,我让它将完整的 URL 直接传递给 ajax javascript: url: 'localhost:8000/ajax/load-discipline-details',但是天哪,这看起来不对。知道如何通过 django templatetags 让它直接工作吗?
标签: javascript python django django-forms