Ich bin ziemlich neu in Django und Web-Entwicklung im Allgemeinen, so dass ich immer noch versuche, viele dieser Ideen zu konzipieren.Django Einreichung Formular Aktion basierend auf was ausgewählt wurde
Was ich schwer verstehen kann, ist, wie man ein HTML-Formular-Aktionsattribut korrekt anwendet, wenn man auf "Senden" klickt, basierend auf dem, was ich in Auswahl-/Dropdown-Boxen ausgewählt habe.
Zum Beispiel, wenn ein Benutzer in einer Dropdown-Box ein Auto auswählen würde (oder in meinem Beispiel trimmen), dann klickte ich auf den Go-Button, ich möchte dann den Benutzer auf eine neue Seite mit Informationen über die Autoverkleidung. Hier ist, was ich habe:
Vorlage
\t <!-- Bar of dropdowns for searching. -->
\t <div class="container-fluid">
\t \t <form action="" method="get" class="form-inline" id="dropdownText">
\t \t \t <div class="form-group" id="dropdownGroup">
\t \t \t \t <span style="display:inline-block" class="selectBox">
\t \t \t \t \t <select class="form-control" id="make">
\t \t \t \t \t \t <option value='empty'></option>
\t \t \t \t \t \t <!-- List each make's name. -->
\t \t \t \t \t \t {% for make in allMakes %}
\t \t \t \t \t \t <option value="{{ make.id }}">{{ make.name }}</option>
\t \t \t \t \t \t {% endfor %}
\t \t \t \t \t </select>
\t \t \t \t \t <label for="make" style="display:block">Make</label>
\t \t \t \t </span>
\t \t \t \t <span style="display:inline-block" class="selectBox">
\t \t \t \t \t <select class="form-control" id="model" disabled>
\t \t \t \t \t \t <!-- List each make's model's name. -->
\t \t \t \t \t </select>
\t \t \t \t \t <label for="model" style="display:block">Model</label>
\t \t \t \t </span>
\t \t \t \t <span style="display:inline-block" class="selectBox">
\t \t \t \t \t <select class="form-control" id="trim" disabled>
\t \t \t \t \t \t <!-- List all trims for each make/model. -->
\t \t \t \t \t </select>
\t \t \t \t \t <label for="trim" style="display:block">Trim</label>
\t \t \t \t </span>
\t \t \t </div>
\t \t </form>
\t \t <form action="" id="trimDetail">
\t \t \t <div class="text-center">
\t \t \t \t <button type="submit" class="btn btn-default" id="go">GO!</button>
\t \t \t </div>
\t \t </form>
\t </div>
Wie es aussieht
http://puu.sh/phaHG/105ed07b28.png
DetailV iew für das Auto trimmen
class DetailView(generic.DetailView):
model = Trim
template_name = 'search/detail.html'
URL, die der Ansicht
url(r'^(?P<pk>\d+)/$', DetailView.as_view(model=Trim,
template_name='search/detail.html')),
Bei der Auswahl der Trimm und klicken unterwegs entsprechen wird, wird die Seite einfach aufgefrischt mit der URL Wechsel zu:
"/? TrimId = 4"
, die trimId ändert sich je nachdem, was der Benutzer ausgewählt hat, sendet aber nicht m zu der Vorlage, die die Informationen für die ID anzeigt.
Ich kann dies durch einfaches Ändern der Formularaktion mit jQuery beim Klicken auf die Schaltfläche machen, aber ich war mir nicht sicher, ob dies eine schlechte Übung war, und ich möchte die richtige Django-Methode lernen.
Meine jQuery Art und Weise tun:
var $elTrim = $('select#trim'); // The trim select box.
var $trimForm = $('form#trimDetail'); // The form around the button.
function updateAction(){
if($elTrim.find('option:selected').val() != 'empty'){
$trimForm.attr('action', $elTrim.val());
}
}
$elTrim.change(updateAction);
Ich habe die Art und Weise, wie ich es mit jQuery gemacht habe, hinzugefügt, aber ich war mir nicht sicher, ob dies der "richtige" Weg war oder ob es keine gute Übung war. Mir war nicht bewusst, dass dies kein Django-Problem ist. – sidp
Oh, ich war verwirrt, was Sie gefragt haben, wie Sie das "run snippet" geklickt haben könnte, um den HTML-Code zu sehen ... – sidp
nicht funktioniert es nicht. Stackoverflow-Lauf-Snippet rendert keine Django-TMplates – e4c5