2017-04-10 5 views
0

Ich habe ein get-Formular, das auf einer Ansicht gut funktioniert.Ist es möglich, ein GET-Formular an zwei verschiedene Ansichten mit zwei Schaltflächen zu senden?

http://myurl.com/myapp/filter_objects/?risk__worktask=1&craft=3 

Ich habe eine andere Ansicht, um diese gefilterte Liste in pdf zu exportieren. Momentan speichere ich die Ergebnisse in der Sitzung und in der Liste von dort in meiner pdf-Ansicht, aber im Idealfall würde ich die Filterparameter vom GET-Formular direkt an die export_to_pdf-Ansicht übergeben.

Ist das in Django möglich? [Um ein gegebenes GET-Formular an zwei verschiedene URLs mit zwei Senden-Buttons zu senden? Wäre großartig !

Danke!

Hier ist meine Form

<form method="get"> 

<div class="well"> 
    <h4 style="margin-top: 0">Filter Objects</h4> 
    <div class="row"> 

     <div class="form-group col-sm-4 col-md-3"> 
      {{ filter.form.risk__worktask.label_tag }} 
      {% render_field filter.form.risk__worktask class="form-control" %} 
     </div> 

     <div class="form-group col-sm-4 col-md-3"> 
      {{ filter.form.craft.label_tag }} 
      {% render_field filter.form.craft class="form-control" %} 
     </div> 

    </div> 

    <button type="submit" class="btn btn-primary"> 
     <span class="glyphicon glyphicon-search"></span> Search 
    </button> 

</div> 

<div class="well"> 
    <h4 style="margin-top: 0">Filtered Ratings: {{ filter.qs.count }}</h4> 
    <a href="{% url 'myapp:export_ratings_to_pdf_by_worktask' %}"> 
     <button type="button" class="btn btn-success">Export Filtered List ({{ filter.qs.count }} items)</button> 
    </a> 

</div> 

Antwort

1

Warum u das formaction = Tag nicht verwenden Attribut in Ihrer Taste, um die Form Aktion außer Kraft zu setzen?

<form method="get" action="firstView"> 
    <input ... 
    <input ... 
    <button ...>Submit to first view</button> 
    .. 
    .. 
    <button formaction="{% url 'myapp:secondView' %}" ...>Submit to second view</button> 
</form> 

Es ist ein HTML5-Attribut, aber es wird von allen gängigen Browsern unterstützt.

FormAction browser support

+0

Das funktioniert! Allerdings nicht perfekt, da ich die Ziel-URL der Formaction im zweiten Button fest codieren musste, ohne die netten Django-URL-Helfer zu verwenden. Irgendeine Idee, was wäre die richtige Syntax dafür? – Malcoolm

+1

Was meinst du mit Hardcoding ?, können Sie einfach das Template '{% url ...%}' -Tag im 'formaction'-Wert verwenden, um es dynamisch zu machen. Genau wie du es mit 'href' gemacht hast. Beispiel: '

+0

Funktioniert wirklich gut danke! Ich nehme die Antwort an und bearbeite sie, um die endgültige Version mit dem URL-Tag hinzuzufügen. Vielen Dank ! – Malcoolm

Verwandte Themen