gpt4 book ai didi

python - 如何在以 Django 形式提交值后立即加载选项列表

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:04 26 4
gpt4 key购买 nike

我有一个简单的模板,首先用户从国家列表中选择一个国家,然后从所选国家的地区列表中选择一个地区,最后提交并显示结果。

问题是当一个国家被选中时,该国家的地区只有在点击提交按钮后才会显示,所以用户必须点击提交两次,第一次是在选择一个国家之后看到地区列表,第二次是选择区域后查看结果。

# models.py

class Region(models.Model):
country_list = [('IT', 'Italy'),
('FR', 'France')]

name = models.CharField(max_length=38)
country = models.CharField(max_length=2, choices=country_list, default="IT")
#views.py

def index_w(request):

country = request.GET.get('country')
region = Region.objects.all()
region = region.filter(country=country)
regions = request.GET.get('regions')

results = Result.objects.all()
if regions is not None:
results = results.filter(region=regions)
return render(request, 'index_uni.html', {
'regions': region,
'country': country
})

/*template*/

<form method="get" action="/university/" class="form-area">
<select name="country">
<option value="IT">Italia</option>
<option value="FR">France</option>
</select>
<select name="regions">
{% for region in regions %}
<option value="{{region.id}}">{{region.name}}</option>
{% endfor %}
</select>
<input type="submit">
</form>

当页面第一次加载时,用户为“国家”选择了一个值,“地区”没有选项;单击提交后,它会正确显示法国或意大利的所有地区。如何在选择国家后页面立即显示 Fr 或 It 的区域?感谢大家的帮助,感谢任何建议,我目前正在查看 Django 教程的第 4 部分,但找不到有关此问题的任何信息。

最佳答案

通过 JavaScript 使用 AJAX 获取区域列表。 AJAX 代表异步 JavaScript 和 XML。它是通过 JavaScript 从 Web 浏览器对 Web 服务器进行异步调用的概念。它允许您要求您的服务器在后台做更多的工作,而您的用户不必手动发出单独的请求,从而导致页面重新加载。 AJAX 的概念是当今 Web 编程的核心。

您将创建一个映射到新 View 的 url,该 View 将国家/地区作为 request.GET(查询字符串)中的参数。然后,它将向下过滤以获取区域,并在 JSON(JavaScript 对象表示法 - 一种文本格式)响应中返回这些区域。

然后为国家/地区下拉列表创建点击事件。当用户选择一个国家时,您将触发 JavaScript 以通过 JavaScript 获取此 url(查看 JQuery AJAX,它比使用 vanilla XHR 请求更简单)。请求返回后,您将使用从响应返回的区域列表更新下拉列表。

关于python - 如何在以 Django 形式提交值后立即加载选项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com