Jestem całkiem nowy dla django i staram się zrobić coś bardzo prostego. Mam ModelForm
w następnym modeludjango: pobieranie danych wejściowych i wyświetlanie danych wyjściowych na tej samej stronie
class Queries(models.Model):
user_id=models.CharField(max_length=200)
query=models.CharField(max_length=200)
A ja pokazując użytkownikowi prosty formularz, który pomoże w sposób następujący:
- użytkownik będzie zadać pytanie
The pytanie zostanie przetworzone (zapytanie bazy danych zostanie wygenerowane na podstawie pytania)
Następnie wynik zapytania Zostanie wyświetlona tuż pod formularzem na tej samej stronie.
To jest jak moja views.py wygląda następująco:
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
Na razie staram prostych spożywczych, biorę wartość w polu zapytania formularza i próbuje wysłać go z powrotem do strona, do tej pory nie udało mi się. to index.html:
<form action=" " method="post">{% csrf_token %}
{{ form }}
<p>{{response}}</p>
<input type="submit" value="Submit" />
</form>
Gdybym mógł to zrobić, myślę, że kwerenda spożywcze przyzwyczajenie się, że tough.The formularz działa poprawnie, gdy dane osobowe są coraz zapisany w bazie danych. Tylko ciąg response
z views.py
nie mógł być pobrany wewnątrz index.html
po przesłaniu formularza. Czy możesz mi pomóc?
EDIT: Próbowałem następujących w index.html
podstawie Hoff za odpowiedź:
<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>
Wciąż nie szczęścia :(
używaj GET zamiast POST. Myślę, że wykonujesz wyszukiwanie – catherine
dzięki :) Edytowane. –