2016-10-21 1 views
0

Ich benutze Django-Formulare, um Informationen von Benutzern zu sammeln. Aber wenn ich zwischen den Seiten wechsle, möchte ich einen der Werte von url in einer von der nächsten Seite anzeigen lassen. Beispiel. Ich habe url für ein Buch wie http://127.0.0.1:8000/checkout/780374157067Wie wird das Formular mit einem Wert geladen?

780374157067 Check-out wird die ibn des Buchs

Nächste Seite ein Formular hat, wo ich die ISBN und Karte ID des Benutzers erhalten. Wie füllt man das Formular mit der ISBN und zeigt das Formular dem Benutzer an. anstatt dass der Benutzer die ISBN erneut gibt. enter image description here

ISBN Filed sollte mit Thw Isbn in URL vorgefüllt werden.

HTML:

<div class ="col-md-3"> 
     <form method='POST' action=''>{%csrf_token%} 
      {{template_form | crispy}} 
      <input class="btn btn-lg btn-primary" type='submit' 
        value='Submit'/> 
     </form> 
</div> 

Forms.py

class loansform(forms.Form): 
    Isbn = forms.IntegerField() 
    Card_id = forms.IntegerField() 
    def clean_Isbn(self): 
     isbn = self.cleaned_data.get("Isbn") 
     isbn_string = str(isbn) 
     if len(isbn_string) != 13: 
      raise forms.ValidationError("Enter a valid ISBN-13") 
     return isbn 

views.py

template_form = loansform();

+2

Können Sie Ihren HTML-Code bereitstellen? Angenommen, es handelt sich um ein Eingabefeld, können Sie einfach ein Wertattribut angeben: text "Name =" isbn "Wert =" DefaultValue ">' – sytech

+1

Verwenden Sie 'Django-Formulare' oder normale' HTML-Formulare' –

+0

I ' m mit Django Formen – Datta

Antwort

1

Sagen Sie url wie

url(r'^checkout/(?P<isbn>\d+)/$') 

Ihrer Meinung haben, wenn Sie Formularklasse instanziiert, Ausgangsdaten, um es wie diese bieten.

form = YourFormClass(initial={'isbn': kwargs['isbn']}) 

Kwargs enthalten URL-Parameter, so können Sie Isbn von URL erhalten.

+0

Ich benutze auch MyFormClass (request.POST oder None). Vorgehensweise in diesem Fall – Datta

+0

Verwenden Sie klassifizierte Ansichten (FormView) zum Verarbeiten von Formularinstanziierung. Die Methoden 'get_form' und' form_valid' erledigen die Aufgabe. –

+0

Danke, es hat funktioniert! – Datta

2

Ihrer Ansicht nach können Sie intial Daten in Form gebracht ersten erhalten Paramter von url dann:

data = {'isbn': 154646486,} 
form = Myform(initial=data) 

in urls.py:

url(r'^checkout/(?P<isbn>\d+)/$',check_page) 

Ansicht Beispiel:

def check_page(request, isbn): 
    data = {'isbn': isbn,} 
    form = Myform(initial=data) 
    template = 'mytem.html' 
    context = {'form': form,} 
    return render(request, template, context) 
Verwandte Themen