You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django:搜索结果页搜索框无法回显用户查询内容的问题

解决Django搜索框回显用户查询内容的问题

嘿,我一眼就瞅到你代码里的问题啦!你在views.py里的search函数犯了个小错误,导致查询内容没法传到模板里回显。

问题根源

你看这段代码:

context_dict = {'result_list': result_list, 'query': query}
context_dict = {'result_list': resu...

你先把query和result_list都放进了context_dict,但紧接着又重新给context_dict赋值了一个不包含query的字典(还没写完),这直接把之前的query给覆盖掉了!模板自然拿不到搜索关键词,也就没法回显了。

修复后的views.py代码

我帮你调整了代码,不仅修复了重复赋值的问题,还加了query的初始化,避免用户直接访问搜索页(GET请求)时模板报错:

def search(request):
    result_list = []
    query = ''  # 初始化query,处理GET请求的情况
    if request.method == 'POST':
        query = request.POST['query'].strip()
        if query:
            print(query)
            print(type(query))
            # 调用Webhose搜索函数获取结果列表
            result_list = run_query(query)
    # 把context_dict放在if外面,确保所有请求都能传递query
    context_dict = {'result_list': result_list, 'query': query}
    return render(request, '你的搜索模板文件名.html', context_dict)

模板里的搜索框写法

接下来在你的搜索结果页模板里,要把query赋值给输入框的value属性,这样就能回显用户的搜索内容了:

<form method="POST" action="{% url 'search' %}">
    {% csrf_token %}  <!-- Django POST表单必须加这个哦 -->
    <input type="text" name="query" value="{{ query }}" placeholder="输入搜索关键词...">
    <button type="submit">搜索</button>
</form>

额外提示

如果之后你想改成GET请求的搜索(比如让搜索结果可以被收藏分享),只需要把request.POST改成request.GET.get('query', ''),同时表单的method改成GET就行啦。

内容的提问来源于stack exchange,提问作者farschmessivo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:26:43