django2 json ajax,ajax与django采用json进行数据交互

1新建django项目名为json_ajax,应用名为app,在templates模板中新建ajax.html文件javascript

ajax.htmlhtml

ajax

{% load staticfiles %}

发送

$("#send").click(function () {

{#json数据#}

var post_data={

"name":"weihu",

};

$.ajax({

url:"http://127.0.0.1:8000/ajax",

type:"POST",

{#发送json数据到服务器#}

data:post_data,

{#请求成功回调函数#}

success:function (data) {

alert(data)

alert("请求成功")

},

{#请求失败回调函数#}

error:function () {

alert("服务器请求超时,请重试!")

}

});

});

2.在settings配置文件中,注释前端

1java

# 'django.middleware.csrf.CsrfViewMiddleware',jquery

STATIC_URL = '/static/'

STATICFILES_DIRS = [

os.path.join(BASE_DIR, 'static'),

]

3.在urls.py文件中,配置path路径ajax

"""json_ajax URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:

https://docs.djangoproject.com/en/2.0/topics/http/urls/

Examples:

Function views

1. Add an import: from my_app import views

2. Add a URL to urlpatterns: path('', views.home, name='home')

Class-based views

1. Add an import: from other_app.views import Home

2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')

Including another URLconf

1. Import the include() function: from django.urls import include, path

2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))

"""

from django.contrib import admin

from django.urls import path

from app import views

urlpatterns = [

path('admin/', admin.site.urls),

path('test',views.test),

path('ajax',views.ajax),

]

4.在views.py中,实现逻辑代码数据库

from django.shortcuts import render,HttpResponse

import json

def test(request):

return render(request,'ajax.html')

def ajax(request):

if request.method=="POST":

name=request.POST.get('name')

print("ok")

status=1

result="sucuss"

return HttpResponse(json.dumps({

"status":status,

"result":result,

"name":name

}))

Django将数据库查询数据QuerySet转换成JSON格式django

1.采用Django Model层,ORM技术  转换成JSON格式json

1 def getdata(request):

2 # 使用ORM

3 # all()返回的是QuerySet 数据类型;values()返回的是ValuesQuerySet 数据类型

4 data = models.VM.objects.values('id', 'ip', 'host', 'username')

5 data = serializers.serialize("json", tomcats)

6 return JsonResponse(list(data), safe=False)

2.彻底弃用Django Model层,纯SQL  转换成JSON格式tomcat

1 def getdata(request):

2 # 使用SQL

3 with connection.cursor() as cursor:

4 cursor.execute('select id, machine, tomcathome, ipaddress, description from tomcatData')

5 data = dictfetchall(cursor)

6 return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})

1 # 将返回结果转换成字典

2 def dictfetchall(cursor):

3 "Return all rows from a cursor as a dict"

4 columns = [col[0] for col in cursor.description]

5 return [

6 dict(zip(columns, row))

7 for row in cursor.fetchall()

8 ]

JsonResponse 对象:

class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,**kwargs)

这个类是HttpRespon的子类,它主要和父类的区别在于:

1.它的默认Content-Type 被设置为: application/json

2.第一个参数,data应该是一个字典类型,当 safe 这个参数被设置为:False ,那data能够填入任何能被转换为JSON格式的对象,好比list, tuple, set。 默认的safe 参数是 True. 若是你传入的data数据类型不是字典类型,那么它就会抛出 TypeError的异常。

3.json_dumps_params参数是一个字典,它将调用json.dumps()方法并将字典中的参数传入给该方法。

经过以上的解释,上面两个方法的JsonResponse()里面传入的参数就很清晰明了。

这样数据就会以JSON格式传入到前端,前端就能用AJAX获取到,并进行处理或者展现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>