比方说,我有以下形式:Django的:将表单数据为“干净的URL”
<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
是一个文字字符串,并且不会将其替换为输入的值。
您需要使用JS,因为你不能输入值粘贴为URL字符串等的一部分这个'/查询/'/结果通过standart django方法 – AndMar
@marni是的,这是有道理的。虽然我对JS并不是很了不起。如果你可以发布一个工作示例,我会将答案标记为正确。 – Sam
即使你使用SEO的目的,你应该使用GET方法,更清洁和更容易 –