2010-12-22 96 views
0

我有这个简单的HTML表单:友好的URL用GET请求表单

<form action="test/" method="get" accept-charset="utf-8"> 

    <input type="text" name="first" value="" id="first"> 
    <input type="text" name="second" value="" id="second"> 
    <input type="text" name="third" value="" id="third"> 

    <p><input type="submit" value="Continue &rarr;"></p> 
</form> 

当用户点击提交按钮,我希望得到友好的URL是这样的:

www.site.com/test/第一/第二/第三

我该怎么做?

回答

3

用户在填写完表格并点击“继续”后最终取决于您在form标记中设置的action属性。您目前已将其设置为test/

如果你希望他们在test/<first_val>/<second_val>/<third_val>/结束,那么您可以使用一些JavaScript(每pythonFoo的答案),也可以在认为test/点重定向,使用HttpResponseRedirect

def test_view(request): 
    return HttpResponseRedirect('/test/%s/%s/%s/' % request.POST['first'], 
                request.POST['second'], 
                request.POST['third]) 
+1

不幸的是,这意味着用户最终会进行2次GET往返旅行,而不是1次。似乎必须有更好的方式,但我没有看到它,而且我一直在寻找一个小时。 – g33kz0r 2013-07-02 21:17:57

2
<input type="text" name="first" value="" id="first"> 
    <input type="text" name="second" value="" id="second"> 
    <input type="text" name="third" value="" id="third"> 

    <p><input type="button" value="Continue &rarr;" onclick="submitFriendly();"></p> 

<script type="text/javascript"> 
function submitFriendly() { 
window.location.href = window.location.href + document.getElementById('first').value + '/' + document.getElementById('second').value + '/' + document.getElementById('third').value; 
} 
</script> 

这应该有效。它不检查是否所有输入都已填满。

+0

这只如果用户启用了JavaScript,则可以工作 – g33kz0r 2013-07-02 21:21:16