比方說,我有以下形式: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方法,更清潔和更容易 –