gpt4 book ai didi

python - Django:将表单数据转换为 'clean url'

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:45 24 4
gpt4 key购买 nike

假设我有以下形式:

<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> 。然而,出于搜索引擎优化的目的,我想将其转换为“干净的网址”,它看起来更像这样:www.<my-domain>.com/results/<some-query> .

我对 urls.py 进行了以下修改:

urlpatterns = [
...
url(r'^results/(?P<query>[a-zA-Z ]+)$', views.ResultsView.as_view(), name="results"),
...
]

所以我应该能够在 ResultsView 中获取查询值,如下所示:

class ResultsView(TemplateView):

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

query = kwargs.get('query')

如何提交表单,使其与相应的 url 模式匹配?我尝试摆弄表单操作,将输入 id 传递给它,如下所示: action="/results/query/" ,但显然,它认为 query是一个文字字符串,不会将其替换为输入的值。

最佳答案

您可以使用 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>

不要忘记添加依赖项

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js">

关于python - Django:将表单数据转换为 'clean url',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com