在不重新加载页面的情况下更新 Django 中的表单值?

Posted

技术标签:

【中文标题】在不重新加载页面的情况下更新 Django 中的表单值?【英文标题】:Update form values in Django without reloading page? 【发布时间】:2011-10-02 02:41:17 【问题描述】:

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

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

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

【问题讨论】:

只需创建一个视图并使用jquery+ajax。我只是查看了链接,它非常不言自明。 我不知道回答者从哪里获得模型中引用的“book_view”。这可能对你来说是不言自明的,但我仍然迷失在正在创建的视图中发生的事情 你能再具体一点吗?页面上不存在字符串book_view... 没有可能方法可以在不使用javascript的情况下从服务器更新客户端上的内容。 【参考方案1】:

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 的调用失败会发生什么?),基本上就这些了。

【讨论】:

谢谢大卫,我会试试这个,感谢您抽出时间帮助我

以上是关于在不重新加载页面的情况下更新 Django 中的表单值?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在不重新加载页面的情况下更新 django 上下文字典?

Django:如何在不刷新页面的情况下更新图像?

Django - 如何在不刷新页面的情况下保持在同一页面上?

如何在不重新加载页面的情况下更新从 firestore 检索到的标记在我的地图上?

我们如何在不重新加载页面的情况下使用 javascript/jQuery 更新 URL 或查询字符串?

在不使用 jQuery 重新加载页面的情况下将 Flask 输入更新为 HTML [重复]