python - Django 提交表单并保留搜索结果
问题描述
我将 Django 用于用户可以在其中搜索图像并将其添加到列表中的页面。在顶部,有一个包含所有可用列表的下拉列表,在页面“body”中有一个搜索表单,用户可以在其中按标签搜索图像。
<form action="{% url 'qwe:search' %}" method="get">
{% csrf_token %}
<input type="text" name="q" placeholder="Search..." {% if query_string %} value="{{query_string}}" {% endif %}>
<input type="submit" value="Search">
</form>
提交时,用户将获得带有搜索结果列表的同一页面。
def search(request):
query_string = request.GET["q"]
if (query_string == None):
return HttpResponseBadRequest()
search_results_list = img_search(query_string, max_results=25)
list_list = helpers.get_lists()
context = {"search_results_list" : search_results_list, "query_string" : request.GET["q"], "lists " : list_list }
return render(request, 'qwe/index.html', context)
我希望用户能够创建其他列表,所以我在下拉列表旁边添加了一个按钮。当用户单击它时,它会打开一个对话框 (div),其中包含一个包含新列表名称输入的表单。
问题:在不丢失搜索结果的情况下,提交用于创建新列表的表单的最佳方式是什么?
我这样做主要是为了学习目的,所以欢迎每一个提示。
谢谢你。
解决方案
我能想到的最明显的方法是创建一个<input type="hidden" \>
作为表单的一部分,其值为query_string
. 这将允许服务器在收到表单详细信息时知道原始搜索查询是什么。
事实上,假设search_results_list
是可序列化的(我猜它是可序列化的,但您的代码不知道其中有什么),您可以序列化它并将该字符串作为隐藏输入发送 - 这样您就可以传输实际的搜索结果,而不仅仅是导致他们的查询。
推荐阅读
- javascript - 如何按文件名将 300k+ 行文本排序到数组中?
- python - Django REST Framework - request.get_params 中仅显示第一个查询参数
- c# - Unity让一个物体穿过另一个物体但仍然触发碰撞
- node.js - 无法从 Express 连接到远程 Redis
- node.js - 是否可以在 graphql/express/node 服务器端实现分页?
- c# - 如何在 NewsAPI 请求中指定域?
- php - mySQL 查询中条件 if 语句的最佳实践是什么?
- python - 将枚举数据从 python 传递给 MATLAB
- android - 将 TextView 锚定到屏幕底部
- python - 无法将列表转换为 pandas DataFrame