2010-12-22 14 views
0

Ich habe diese einfache HTML-Formular:freundliche URL mit get Anfrage

<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> 

wenn klicken Benutzer Submit-Button, ich möchte wie dieses freundliche URL erhalten:

www.site.com/test/ erste/zweite/dritte

wie kann ich das tun?

Antwort

3

Wo der Benutzer nach dem Ausfüllen des Formulars landet und auf "Weiter" klickt, hängt davon ab, was Sie in Ihrem -Tag auf das Attribut action setzen. Sie haben es derzeit auf test/ festgelegt.

Wenn Sie wollen, dass sie bei test/<first_val>/<second_val>/<third_val>/ landen, dann können Sie entweder einige JavaScript verwenden (pro pythonFoo Antwort), oder Sie können in der Ansicht, dass test/ Punkte auf, mit HttpResponseRedirect umleiten:

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

Leider bedeutet dies, dass der Nutzer am Ende 2 GET Rundreisen statt 1 macht. Es scheint so, als müsste es einen besseren Weg geben, aber ich sehe es nicht und habe eine Stunde lang gesucht. – g33kz0r

+0

@ g33kz0r Wie wäre es ein besserer Weg? Entweder Sie verwenden eine 'GET' Anfrage in dem Formular, was zu einer' GET' Anfrage zu '? First = foo & second = bar & third = baz' führt, oder Sie benutzen' POST' in dem Formular, welches keine Parameter in die URL, oder Sie verwenden JavaScript, pro PythonFoo die Antwort unten. Was versuchst du zu machen? Was ist los mit dem zusätzlichen "GET"? –

+0

Nichts falsch daran * per se *, es scheint nur verschwenderisch für meine Intuition. – g33kz0r

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> 

Dies sollte funktionieren. Es prüft nicht, ob alle Eingaben gefüllt sind.

+0

dies nur funktioniert, wenn der Benutzer Javascript aktiviert hat. – g33kz0r

Verwandte Themen