【发布时间】:2013-01-28 00:58:19
【问题描述】:
我对 django 很陌生,并且努力做一些非常简单的事情。
我有以下型号的ModelForm:
class Queries(models.Model):
user_id=models.CharField(max_length=200)
query=models.CharField(max_length=200)
我正在向用户展示一个简单的表单,这将有助于执行以下操作:
- 用户会问一个问题
将处理问题(将生成数据库查询 基于问题)
那么查询结果应该显示在表格的正下方 同一页。
这就是我的 views.py 的样子:
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
现在我正在尝试简单的东西,我正在获取表单查询字段中的值并尝试将其发送回页面;到目前为止我失败了。 这是 index.html:
<form action=" " method="post">{% csrf_token %}
{{ form }}
<p>{{response}}</p>
<input type="submit" value="Submit" />
</form>
如果我能做到这一点,我认为查询内容不会那么困难。表单工作正常,数据正在保存在数据库中。提交表单后,无法在index.html 中检索到来自views.py 的response 字符串。你能帮忙吗?
编辑:
根据霍夫的回答在index.html 中尝试了以下操作:
<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>
仍然没有运气:(
【问题讨论】:
-
您应该使用 GET 而不是 POST。我认为您进行了搜索
标签: django django-forms modelform