Django:将表单数据转换为“clean url”

2024-04-19 12:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下表格:

<form id="search-form" class="form-horizontal" method="GET" action="/results/" role="form">
    <input type="text" class="form-control" id="query" name="query">

    <button type="submit"  form="search-form" class="btn btn-primary">
        <span class="glyphicon glyphicon-search" aria-hidden="true"></span>       
    </button>
</form>

当前,当表单被提交时,url将查询作为一个参数包含,比如:www.<my-domain>.com/results?query=<some-query>。但是,出于SEO的目的,我想把它转换成一个“干净的url”,看起来更像这样:www.<my-domain>.com/results/<some-query>。在

我对我的网址.py公司名称:

^{pr2}$

所以我应该可以像这样在ResultsView中获取查询值:

class ResultsView(TemplateView):

    def dispatch(self, request, *args, **kwargs):

        query = kwargs.get('query')

如何提交表单以使其与相应的url模式匹配?我尝试过修改表单操作,将输入id传递给它,像这样:action="/results/query/",但是很明显,它认为{}是一个文本字符串,并没有用输入的值替换它。在


Tags: formidurl表单searchwwwtypebutton
1条回答
网友
1楼 · 发布于 2024-04-19 12:39:15

使用JQuery可以很容易地做到这一点。单击该按钮时,阻止默认操作,并在window.location.href中定义它应该重定向到的url。在

<script>
    $(document).ready(function () {
        $("button").click(function (e) {
            e.preventDefault();
            query = $("#query").val();
            window.location.href = location.origin + "/results/" + query;
        });
    });
</script>

别忘了添加依赖项

^{pr2}$

相关问题 更多 >