django中的ajax单击功能后如何从数据库中返回相关值?

Posted

技术标签:

【中文标题】django中的ajax单击功能后如何从数据库中返回相关值?【英文标题】:How to return related value from database after click function by ajax in django? 【发布时间】:2022-01-01 23:41:11 【问题描述】:

html

  <div>           
  
  productform.vendorid|as_crispy_field <a id="vendor_id_search" class="btn btn-info">search</a></br>
    
    <div style="display:none;" id="show_vendorname">hjkh</div><br>
 </div>
 


 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>




 <script>
$("#vendor_id_search").click(function (event) 
    event.preventDefault();
    var vendor_id = $("#id_vendorid").val();

  $.ajax(
    url: '/ajax/find_vendorname/',
    method: 'GET',
    data: 
      'vendor_id': vendor_id
    ,
    dataType: 'json',
    success: function (data) 
        $("#show_vendorname").show(data)
    
  );

);

views.py

 #vendor_name_find_ajax
 def find_vendorname(request):
     if request.is_ajax():
         vendorid = request.GET.get('vendor_id', None)
         username = CustomUser.objects.filter(first_name=vendorid)
         return username

我想在用户键入 vendorid 字段并单击按钮后,从数据库表中显示该 vendorid 的相关名称,相关名称应显示在该特定 div 上。在这里,我犯了一个错误,不知道得到那个值。

【问题讨论】:

你需要找到卡住的部分。 1. 您的 ajax 请求是否已发送?(检查浏览器网络选项卡) 2. 您的 views.py 函数是否被调用并确实找到了某些内容/将某些内容发送回浏览器。 3.你的js是否正确,它是否获取数据并将其正确插入到html中......检查你被卡住的print()和console.log()。我的猜测是在views.py 返回用户名将失败,因为它是一个查询集而不是一个HttpResponse。你需要正确渲染它。也许使用 DRF 之类的东西(只是一个提示) 我了解此方法的整个概念,并通过您的参考进行了检查。发送 ajax 请求时出错。顺便感谢您的评论。 【参考方案1】:

$("#show_vendorname").show(data)取消隐藏div,但不要在数据中设置。

你需要在$.html()之前设置数据

$("#show_vendorname").html(data).show()

编辑:

此外,您的视图需要返回一个HttpResponse

from django.http import HttpResponse

def find_vendorname(request):
     if request.is_ajax():
         vendorid = request.GET.get('vendor_id', None)
         username = CustomUser.objects.filter(first_name=vendorid)
         return HttpResponse(username)

【讨论】:

但没有得到输出。视图函数和 ajax 函数是否符合我的要求? 对不起@sam。我编辑了回复。 谢谢,我明白了。谢谢你的回答。

以上是关于django中的ajax单击功能后如何从数据库中返回相关值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中使用 AJAX 从 html 中正确调用函数/url?

Ajax 调用以通过单击按钮返回填充表单字段 django

Div 在使用 ajax 和 django 进行第二次点击后显示/隐藏

如何制作 django 消息 *** 样式?

在 python Django 中的 ajax 成功后,猫头鹰轮播不工作

在 django 模板中单击按钮后如何填充表格?