[英]Get object list with ajax in Django
我在django应用程序中使用ajax,它运作良好,除非要在表中获取所有寄存器。 我不知道如何从我的“ ajaxview”发送到javascript代码,然后解析结果。
这是我的list.html
<table>
<thead>
<tr>
<th>id</th>
<th>Name</th>
<th>Gender</th>
<th>Birth date</th>
</tr>
</thead>
<tbody id="clientList">
<!--Here where I want to put the client list-->
</tbody>
</table>
<script>
getAllClients();
</script>
这是我的urls.py
from django.conf.urls import url, include
from django.contrib import admin
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
from store_app import ajax as ajaxview
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^listClients/$', csrf_exempt(ajaxview.listClients), name='listClients'),
]
这是我的ajax.py ,其中的视图比views.py中的视图不同
def listClients(request):
data = []
clientlist = clients.objects.filter(clientstatus=1)
#Here is where I don't know if I am doing correctly
#I don't know how to send the client list or if I have to send it as a JSON
#Please help here
data.append({'clist':clientlist })
return HttpResponse(json.dumps(data), content_type="application/json")
最后的代码实际上可以用于其他内容,但不能发送所有数据
这是我的list.js脚本
funtion getAllClients()
{
$.ajax(
{
type: "POST",
url: "/getAllClients/",
data: "",
success: function(result)
{
console.log(result); //Should I have a json object in 'result' variable?
$.each(result, function(key, val)
{
//Here is where I want to parse each object and add to the HTML table
});
}
});
}
这段代码在浏览器控制台中给我一个错误。 请帮忙。 谢谢。
您的想法正确,并且取决于您的Django版本,您可能是正确的。 对于Django版本<1.7,您具有正确的语法。 对于1.7版及更高版本,您应该这样使用JsonResponse:
from django.http import JsonResponse
def listClients(request):
data = []
clientlist = clients.objects.filter(clientstatus=1)
#Here is where I don't know if I am doing correctly
#I don't know how to send the client list or if I have to send it as a JSON
#Please help here
data.append({'clist':clientlist })
return JsonResponse(data)
实际上,在javascript中的AJAX请求中,结果对象实际上就是您从后端发送的json。 然后在.each()方法中,可以将列表添加到HTML。
虽然您可以使用JsonResponse解决此问题,但我也建议您考虑设置django-rest-framework,因为您实际上是在创建rest API,并且可以利用django-rest-framework库使其变得更容易。 这将需要一些开销来学习,但是如果您需要制作更多的API,则绝对有用。 文档在这里 。
祝好运!
您需要在请求中包含一个csrftoken
。 https://docs.djangoproject.com/en/2.0/ref/csrf/
但是,您也应该使用基于类的视图和Django Forms发出此类请求。
您拥有的另一个选项是使用Django模板语言来插入所需的数据。 只需将数据传递到视图的context_data中即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.