带有动态数据的Django模板表单目标

时间:2020-03-09 16:10:31

标签: html django forms django-templates

我是Django模板的新手。我在标头中有一个搜索字段,我想以这种格式发送搜索到的关键字 search/q/{{keyword}}/

我的html代码是这个

<form action="{% url 'content.search' q=searched_key %}" class="search-input">
    <input type="text" name="searched_key">
    <button type="submit"><i data-feather="search"></i></button>
</form>

我想获取输入值并发送,但结果url是这个
http://127.0.0.1:8000/contents/search/q//?searched_key=test
我怎样才能正确地做到这一点?

2 个答案:

答案 0 :(得分:0)

使用javascript完成此操作可能更好。

<form id="form-id">
    <input type="text" id="searched_key" name="searched_key">
    <button type="submit"><i data-feather="search"></i></button>
</form>

<script type="text/javascript">

function submitForm(e) {
    // Prevent default form submit
    e.preventDefault();
    // Get the search query
    let query = document.getElementById("searched_key").value;
    // redirect to the url with the query appended
    window.location.href = "/contents/search/" + query + "/";
    return false;
}

// Add an event listener to the form when the page loads
window.addEventListener('load', function() {
    document.getElementById("form-id").addEventListener('submit', submitForm);
});

</script>

答案 1 :(得分:0)

您可以POST的形式使用搜索值(不需要在网址中使用/search/q//?searched_key=test),并且您的视图应该是这样的:

def search_view(request):
    if request.method == "POST":
        search_key = form.save()
        search_result = Content.objects.filter(key=search_key)

    context = {
        'results': search_result,
    }
    return render(request, 'content.html', context)