【发布时间】:2021-05-24 18:33:41
【问题描述】:
使用 Ajax 和 Django,我的数据在发送回我的模板时会丢失并且我无法检索它们。 这是我的代码和逻辑: 遵循 ["Simple is Better Than Complex"][1] 提供的相关下拉列表教程 我已经实现了一个 Ajax 请求。 这是html代码:
<p class="multiple-choice" id="mandate-city" data-url="{% url 'officials:ajax_load_mandate_city' %}">Local Mandate: {{ form.mandate_city }}</p>
ajax 请求是从此脚本触发的:
<script>
$("#id_departments").change(function (){
var url = $("#mandate-city").attr("data-url");
var departmentId = $(this).val();
$.ajax({
url: url,
data: {
'department': departmentId
},
success: function (data){
$("#id_mandate_city").html(data);
console.log(data);
}
});
});
</script>
通过console.log检查后,脚本收集数据。然后,他们到达了视野。 这是我的看法:
def load_mandate_city(request):
department_id = request.GET.get('department')
mandate_city = MandateCity.objects.filter(department_id=department_id).order_by("department")
return render(request, "officials/mandate_city_list.html", {mandate_city: mandate_city})
通过打印,我已经检查过了,数据按计划处理。 然后数据通过url发回:
path('ajax/load_mandate_city/', views.load_mandate_city, name="ajax_load_mandate_city")
他们似乎没有到达模板:
{% for mandate in mandate_city %}
<option value="{{ mandate.pk}}">{{ mandate.get_mandate_display }}</option>
{% endfor %}
而且我无法在我的脚本中跟踪它们。 :-/ 有人可以让我知道错误在哪里吗? 谢谢。 [1]:https://simpleisbetterthancomplex.com/tutorial/2018/01/29/how-to-implement-dependent-or-chained-dropdown-list-with-django.html
【问题讨论】:
-
如果您在返回函数 load_mandate_city 之前打印 task_city,您会得到结果还是只是一个空列表?
-
如果我在视图中打印任务城市,就在返回上方,我得到查询集。