2016-12-15 2 views
0

Ich benutze Django und ich habe gerade eine große Form mit HTML5 und Bootstrap. Kann ich das Formular noch über die Post-Methode an django senden, wenn ich es nicht zum Generieren des Formulars verwende? Soll ich mein Formular mit Django definitiv wiederholen?Kann ich mein Formular ohne Django-Formular erstellen?

+1

Ja, Sie können es so machen. Meiner Erfahrung nach besteht der Hauptunterschied darin, dass man eine Menge von Django Formular-Validierungskram verwenden kann, wenn man Django-Formulare benutzt, aber es wird ein wenig mehr Aufwand erfordern, um sie gut aussehen zu lassen. – elethan

+0

ich denke, ja. in 'form' Tag verwenden' Aktion' URL, und erstellen Sie die Ansicht für diese URL –

+0

Wenn Sie nicht zufrieden mit der Art und Weise Standard Django Formen aussehen, wenn sie gerendert werden (was nicht so gut aussieht), gibt es ein Paket namens Django - Crispy-Formen, die Sie verwenden können, um sie viel besser aussehen zu lassen. –

Antwort

2

HINWEIS: Es könnte einen besseren Weg geben, wenn ich das wirklich gerne wissen möchte, so habe ich es in der Vergangenheit gemacht.

Sie benötigen noch eine forms.py Datei in Ihrer App.

In forms.py:

from django import forms 

class MyForm(forms.Form): 

    # FORM FIELDS HERE 

Dann für Ihre Ansicht, welche die Form im Kontext Wörterbuch setzen:

def myView(request): 

    if request.method == "POST": 

     # FORM PROCESSING HERE 

    else: 

     myform = MyForm() #create empty form 

    return render(request, "template.html", {"myform": myForm} 

Jetzt in Ihrer Vorlage können Sie hinzufügen:

 <form id="myForm" name="myFormName" method="post" action="."> 
      {% csrf_token %} 
      {% for field in myform %} 
      {{ field.as_hidden }} 
      {% endfor %} 
     </form> 

Dieser Wille füge dein Django-Formular der Seite hinzu, ohne es anzuzeigen. Alle Ihre Formulareingaben erhalten die ID id_fieldName, wobei fieldName der Feldname ist, den Sie in der Datei forms.py definiert haben.

Jetzt, wenn der Benutzer klicken Sie auf "Senden" -Schaltfläche (die ich nehme, ist ein Bootstrap-Taste gegeben den Rest Ihres Formulars ist). Sie können Jquery verwenden, um die Bootstrap-Feldwerte in die Werte des ausgeblendeten Formulars einzugeben.

Etwas wie:

$("#mySubmitButton").click(function() { 

     $("#id_djangoFormField").val($("#myBootstrapFormField").val()); 
     $("#myForm").submit(); 

    } 
); 

Dies wird die django Form mit den Eingängen von Bootstrap einreichen. Dies kann in der Ansicht normal mit cleaned_data["fieldName"] verarbeitet werden.

Verwandte Themen