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 【问题描述】: <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?
Div 在使用 ajax 和 django 进行第二次点击后显示/隐藏