使用Django模板设置默认值

时间:2013-06-14 14:39:25

标签: python django forms django-templates

所以,我正在创建搜索功能,我希望在呈现搜索结果时,先前输入的查询保留在搜索框中。目前,我这样做的方式是发送POST请求,抓取查询并将其作为变量发送回模板。但是出于某种原因,它只适用于查询的第一个单词,并且所有后续单词都会被删除。当我在

标签内渲染相同的变量时,它会像我期望的那样出现。那里有什么东西我做得不对吗?

<div id="searchwrapper">
    <form action="/search" method="post"> {% csrf_token %}
        {% if old_query %}
        <input type="text" class="searchbox" name="s" value={{old_query}} />
        {% else %}
        <input type="text" class="searchbox" name="s" value="" />
        {% endif %}
        <input type="image" src="static/images/search-icon.svg" class="searchbox_submit" value="" />
    </form>
</div>


def search(request):
    context = {}
    context.update((csrf(request)))
    results_string = ""
    if request.POST:
        results_string = find(request)
        old_query = request.POST['s']
        context.update({"old_query": old_query})
    search_bar = render_to_string("search.html", Context(context))
return HttpResponse(search_bar + results_string)

我不认为find方法是相关的,但如果您认为它有用并且我可以发布它,请告诉我。该模板是“search.html”的相关部分。就像我说的,如果我将行<p>{{ old_query }}</p>添加到{% if old_query %}部分,则显示正确的值,但是目前我使用了类似的查询hello stackoverflow!我只会将“你好”作为搜索字段的值。

这可能是愚蠢的事情,但我对网络开发人员来说还是新手,所以我们非常感谢你们的帮助。

1 个答案:

答案 0 :(得分:3)

修复此行以在引号之间包裹{{old_query}}

<input type="text" class="searchbox" name="s" value="{{old_query}}" />

这应该给你整个搜索而不是第一个单词。

相关问题