2013-07-19 14 views
26

Posso avere un modulo nel mio modello che non è supportato da un modello. Non ho bisogno di memorizzare i dati solo bisogno di quei dati per generare una mia richiesta POST nella vista.Posso avere un modulo Django senza il modello

Modello: modulo con campi di testo. Visualizza: recupera i dati dal modulo e genera un'altra richiesta.

Flow -> Modulo di presentare prende a un URL che chiama la vista "

def form_handle(request): 
    if request.method=='POST' 
    form = request.POST 

    #blah blah encode parameters for a url blah blah 
    #and make another post request 

ma questo mette solo il token CSRF nella variabile modulo C'è qualche modo per accedere a quei campi di testo di. il modello a mio avviso form_handle?

so come farlo con un modello, ma non riusciva a capirlo!

risposta

37

Sì. questo è molto possibile. Si può leggere su Form objects. sarebbe nello stesso modo in cui guai uld trattare un ModelForm, tranne che non sei legato dal modello, e devi dichiarare esplicitamente tutti gli attributi del modulo.

def form_handle(request): 
    form = MyForm() 
    if request.method=='POST': 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      #now in the object cd, you have the form as a dictionary. 
      a = cd.get('a') 

    #blah blah encode parameters for a url blah blah 
    #and make another post request 
    #edit : added ": " after if request.method=='POST' 

e

class MyForm(forms.Form): #Note that it is not inheriting from forms.ModelForm 
    a = forms.CharField(max_length=20) 
    #All my attributes here 

Nel modello:

<form action="{% url form_handle %}" method="POST">{% csrf_token %} 
    {{form.as_p}} 
    <button type="submit">Submit</button> 
</form> 
+2

impressionante, completamente trascurato la cosa FORMATI.FORM. Questo dovrebbe funzionare! Grazie!!! – AdRoiT

Problemi correlati