2

我目前正在 Django 中开发一个项目,目前我正在开发一个包含多个元素的表单。每个元素都是动态的,并且需要在其上方的元素更改值时更新其选项。我知道每当另一个元素的值发生变化时,我都可以使用 AJAX 来更新元素内容,但我想知道是否有更多的 Django 方式,或者无论如何都可以在服务器端执行此操作?我的主要目标是在不每次都重新加载整个页面的情况下做到这一点,感谢任何反馈。谢谢!

更新:我的问题与Django ajax 表单非常相似,选择字段依赖但我不完全理解答案中发生了什么。如果有人可以更详细地解释它,那将解决我现在所有的问题。我正在尝试该答案所说的内容,但是当我尝试加载它时出现 500 和 403 错误。

跟进:显然我所有的问题都来自一个过时的 jQuery 库,一旦我更新它,一切都恢复正常了!

4

1 回答 1

6

AFAIK 没有规范的 Django 做 Ajax 的方式……但是做自己是很简单的:

首先,您必须创建一个视图,该视图返回更新视图所需的任何 JSON 数据。例如某省的城市列表:

from django.utils import simplejson as json

def list_cities(request):
    cities = city_names_in_province(request.GET["province"])
    return json.dumps(cities)

其次,您必须从 HTML 调用该视图(假设为 jQuery):

<select id="provinces">
    …
</select>

<select id="cities" disabled="true">
    <option>---</option>
</select>

<script>
$("#provinces").change(function() {
    var province = $(this).val();
    $.getJSON("{% url list_cities %}", { province: province }, function(cities) {
        var cities_select = $("#cities");
        … put the `cities` list into the `cities_select` …
    });
});
</script>

而且,除了“美化”和错误检查(例如,如果调用list_cities失败会发生什么?),基本上就这些了。

于 2011-07-10T08:12:38.583 回答