【发布时间】:2017-08-27 16:04:39
【问题描述】:
我在 DOM 中有两个选项列表,第一个填充了对视图的初始调用(即加载页面)。第二个选项列表的内容取决于用户在第一个选项中选择的内容。
假设选择列表是:
list_of_eventslist_of_rooms
每次第一个选项列表的状态发生变化(用户选择不同的事件)时,我都需要在不刷新页面的情况下更新第二个选项列表(可用房间)的内容。这可能吗?
我的模板如下所示:
{% block content %}
{% if list_of_events %}
<form>
<select>
{% for event in list_of_events %}
<option value="name">{{ event.title }}</option>
{% endfor %}
</select>
</form>
{% else %}
<p>No events available now.</p>
{% endif %}
目前,第二个选项列表 list_of_rooms 仅在用户从 list_of_events 选项列表中选择任何内容时才可见。如果用户在list_of_events 中选择一个值,则first_selection 参数将传递给模板。
{% if first_selection %}
<form>
<select>
{% for room in list_of_rooms %}
<option value="name">{{ room.id }}</option>
{% endfor %}
</select>
</form>
{% endif %}
<input type="submit" value="Submit">
{% endblock %}
我的views.py 函数如下所示:
def events(request):
list_of_events = Event.objects.all()
return render(
request,
'web_service/schedule.html', {'list_of_events': list_of_events}
)
【问题讨论】:
-
你考虑过 Ajax 吗?
-
您只能重新填充页面而不使用 Javascript 重新加载它。它不能在 Python 中完成,尽管您可以在 Python 中返回所需的数据。有很多关于 AJAX 的教程。
-
不幸的是我不熟悉它,但我确实有 Angular4 的经验,所以我正在寻找一些相似之处。可以简单地将 typescript 方法绑定到 onClick 事件,并且 DOM 将自动更新而无需刷新页面。
-
Typescript 只是带有一些额外花里胡哨的 Javascript。基本上情况相同。
-
如果你只是需要根据一个事件渲染不同的内容,任何Javascript框架都可以做到。