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是可序列化的(我猜是,但你的代码不知道里面有什么(,你可以序列化它并将该字符串作为隐藏输入发送 - 这样你就会传输实际的搜索结果,而不仅仅是导致它们的查询。

最新更新