Python Django:使用来自模板的ajax调用更新模型字段
我有一个模型:Python Django:使用来自模板的ajax调用更新模型字段,python,ajax,django,Python,Ajax,Django,我有一个模型: class ok(models.Model): name = models.CharField(max_length=255) project = models.CharField(max_length=255) story = models.CharField(max_length=500) depends_on = models.CharField(max_length=500, default='') rfc = models.Cha
class ok(models.Model):
name = models.CharField(max_length=255)
project = models.CharField(max_length=255)
story = models.CharField(max_length=500)
depends_on = models.CharField(max_length=500, default='')
rfc = models.CharField(max_length=255)
我有模型表格
class okForm(ModelForm):
class Meta:
model = ok
fields='__all__'
我得到了前3个字段:名称、项目、故事用户手册输入。现在,我想使用AJAX调用from views函数来填充第三个字段的最后两个字段,该函数将查询mysql数据库。
我在视图中有一个功能
def get(self, request):
name = request.GET.get('name')
project = request.GET.get('project')
story = request.GET.get('story')
if name and project and story:
try:
obj = ok.objects.get(name=name, project=project, story=story)
return JsonResponse(data={
'depends_on': ok_obj.depends_on,
'rfc': ok_obj.rfc}, status=200)
except ok.DoesNotExist:
pass
return JsonResponse(data={'error': 'bad request'}, status=400)
我将如何使用用户刚刚填写的第三个值进行ajax调用,因为他还没有提交表单
请帮忙。如果我正确理解了您的问题,请在您的模板中-
<input type="text" onkeyup="get_value()" name="third_value" />
<script>
function get_value(){
var val=document.getElementsByName("third_value")[0].value;
var xhr=new XMLHttpRequest();
xhr.open("GET","get_value_url?value="+val,true);
xhr.onreadystatechange=function(){
if(xhr.readyState == 4 && xhr.status == 200){
var res=JSON.parse(xhr.responseText);
// do something with this response like autofill
}
}
xhr.send(null);
}
</script>
当然,您希望在模板中设置一些超时,这样它就不会在用户每次按下按钮时进行查询
希望这有帮助。如果我正确理解了您的问题,请在模板中执行-
<input type="text" onkeyup="get_value()" name="third_value" />
<script>
function get_value(){
var val=document.getElementsByName("third_value")[0].value;
var xhr=new XMLHttpRequest();
xhr.open("GET","get_value_url?value="+val,true);
xhr.onreadystatechange=function(){
if(xhr.readyState == 4 && xhr.status == 200){
var res=JSON.parse(xhr.responseText);
// do something with this response like autofill
}
}
xhr.send(null);
}
</script>
当然,您希望在模板中设置一些超时,这样它就不会在用户每次按下按钮时进行查询
希望这能有所帮助。您能详细说明您的实际需求吗?从视图调用ajax是什么意思?我需要对“get”函数进行ajax调用,并将第三个字段“story”作为输入,这样我就可以使用它进行mysql查询您的意思是从模板到视图的ajax调用。对吗?我想你已经在你现有的代码中完成了。你能详细说明你的实际需求吗?你说的来自视图的ajax调用是什么意思?我需要对“get”函数进行ajax调用,将第三个字段“story”作为输入,这样我就可以用它进行mysql查询了。你是说从模板到视图的ajax调用。对吗?我想你已经在你现有的代码中做到了。现在我看到了以下错误::raise MultiValueDictKeyError(repr(key))MultiValueDictKeyError:“u'third_value'”跟随编辑过的帖子。实际上,存储值的变量是
value
。仍然得到相同的错误:val=request.GET[“value”]File”/usr/lib64/python2.7/site packages/django/utils/datastructures.py”,在getitem raise MultiValueDictKeyError(repr(key))的第85行MultiValueDictKeyError:“u'value'”你能把请求的值发布出来吗?在这里打印出来吗?现在我得到了以下错误::raise MultiValueDictKeyError(repr(key))MultiValueDictKeyError:“u'third_value'”跟随编辑过的帖子。实际上,存储值的变量是value
。仍然得到相同的错误:val=request.GET[“value”]File”/usr/lib64/python2.7/site packages/django/utils/datastructures.py”,在getitem raise MultiValueDictKeyError(repr(key))的第85行MultiValueDictKeyError:“u'value'”您能不能只发布请求的值。通过打印它来获取