Sono abbastanza nuovo a Django e lottando per fare qualcosa di molto semplice. Ho un ModelForm
per il seguente modello:django: prendendo l'input e mostrando uscita nella stessa pagina
class Queries(models.Model):
user_id=models.CharField(max_length=200)
query=models.CharField(max_length=200)
E sto mostrando all'utente una forma semplice che vi aiuterà a fare la seguente:
- utente chiederà una domanda
Il la domanda verrà elaborata (verrà generata una query del database in base alla domanda)
Quindi il risultato della query è shou Si può visualizzare appena sotto il modulo nella stessa pagina .
Ecco come il mio views.py assomiglia:
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render
from basicapp.models import QueryForm
def index(request):
form=MyForm()
real_form=form.getForm(request)
response=form.response
return render(request,'basicapp/index.html',{
'form': real_form,
'response':response,
})
class MyForm:
response=''
def getForm(self,request):
form = QueryForm(request.POST)
if form.is_valid():
response=form.cleaned_data['query']
form.save()
return form
Per ora sto cercando stoffe semplici, sto prendendo il valore nel campo di interrogazione della forma e cercando di inviare di nuovo a la pagina, finora sono fallito. Questo è index.html:
<form action=" " method="post">{% csrf_token %}
{{ form }}
<p>{{response}}</p>
<input type="submit" value="Submit" />
</form>
Se potessi fare questo, credo che la query infila wont essere che tough.The modulo sta lavorando bene, i dati sono sempre salvati nel database. Solo la stringa response
da views.py
non può essere recuperata all'interno di index.html
dopo l'invio del modulo. Puoi per favore aiutare?
EDIT: provato seguendo index.html
in base alla risposta del Hoff:
<form id="myForm" action=" " method="get">{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
<div id="response">
</div>
<script language="JavaScript">
$(document).ready(function() {
$("#myForm").submit(function() { // catch the form's submit event
$.ajax({ // create an AJAX call...
data: $(this).serialize(), // get the form data
type: $(this).attr('GET'),
success: function(response) { // on success..
$("#response").html(response); // update the DIV
}
});
return false;
});
});
</script>
Ancora nessuna fortuna :(
si dovrebbe usa GET invece di POST. Penso che tu esegua una ricerca – catherine
Grazie :) Modificato. –