2017-02-09 3 views
1

Grundsätzlich versuche ich derzeit, die Tatsache zu umgehen, dass Sie eine HttpResponseRedirect nach der Formularübermittlung tun müssen, um wiederholte Eingaben bei der Seitenaktualisierung zu vermeiden.Formularaktion wird überhaupt nicht ausgelöst

So möchte ich meine Schaltfläche senden für mein Formular eine andere Ansicht auslösen, nicht die aktuelle Ansicht senden. Hier ist mein html ist: (Ich habe die Form herausgenommen, weil es viele Code ist die Tabelle horizontal zu machen)

<form id= "time-form" method = 'POST' action='' class="dynamic-form" enctype="multipart/form-data">{% csrf_token %} 
      <div id="formset-container" class = "formset-container"> 
       <table> 
       <--form is in here--> 
       </table> 
       <ul>{{ newtime_formset.errors }}</ul> 
      </div> 
      </br> 
      <div> 
       <input type = "submit" id = "save" action="{% url 'tande:create_time' %}" value = "Save Timesheet"> 
      </div> 

Deshalb möchte ich die Submit-Button die create_time Ansicht auszuführen. Wir sind derzeit in einer Ansicht namens Arbeitszeittabelle. Die Create_time-Ansicht wird jedoch nicht angezeigt, sondern bleibt nur in der aktuellen Ansicht.

def create_time(request): 
    #below isn't printing 
    print "create_time view" 
    #save the form in here 
    return HttpResponseRedirect('timesheet') 

und die URL für beide Ansicht:

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    url(r'^(?P<timesheet_id>[0-9]+)/person/timesheet/$', views.timesheet, name='timesheet'), 
    url(r'^create_time/$', views.create_time, name='create_time'), 
] 

So möchte ich die Zeiterfassungs in create_time speichern und dann zu Zeiterfassungs zurück Umleitung zu vermeiden .... Ich denke, das macht Sinn .. ..: S

Dank

Antwort

2

Aktionsparameter in Form definiert, wo die Seiten eine nicht den Knopf vor.

<form id= "time-form" method = 'POST' action="{% url 'tande:create_time' %}" class="dynamic-form" enctype="multipart/form-data">{% csrf_token %} 
    <div id="formset-container" class = "formset-container"> 
      <table> 
      <--form is in here--> 
      </table> 
      <ul>{{ newtime_formset.errors }}</ul> 
     </div> 
     </br> 
     <div> 
      <input type = "submit" id = "save" value = "Save Timesheet"> 
    </div> 
</form> 

Auch in Ihrer Ansicht benötigen Sie Reverse-URL Resolver

def create_time(request): 
    #below isn't printing 
    print "create_time view" 
    #save the form in here 
    return HttpResponseRedirect(reverse('timesheet', kwargs={"timesheet_id":<timesheet_id>})) 
+0

Ein weiteres Problem django, erhalte ich timesheet_id globalen Namen nicht definiert ist. Also habe ich 'kwargs = {" timesheet_id ": timesheet_object}' versucht, was der ID-Wert ist und NoReverseMatch .... ** Reverse für 'timesheet' mit Argumenten '()' und Schlüsselwortargumenten '{' timesheet_id ': u '34'} 'nicht gefunden. 0 Muster (s) versucht: [] ** –

+0

Das ist eine Konvention, Sie müssen es durch eine Variable ersetzen, die die Zeiterfassungs-ID enthält. Sollte ID des Objekts sein, dass Sie in der Form Post allgemein –

+0

Oh ich sehe! in der obigen '34' ist meine Timesheet-ID ... Ich brauche das in der URL .. –

Verwandte Themen