分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

Django高级-AJAX应用

发布时间:2023-09-06 02:17责任编辑:郭大石关键词:暂无标签

预备知识JSON

什么是JSON

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言
JSON 具有自我描述性,更易理解

JavaScript和python的区别

Django内置的序列化

from django.shortcuts import HttpResponsefrom django.core import serializersfrom app01 import modelsdef person(request): ???ret = models.Person.objects.all() ???ret1 = models.Person.objects.all().values() ???print(ret) ???print(ret1) ???s = serializers.serialize(‘json‘, ret) ???print(s) ???return HttpResponse(s)

发请求的方式

1. 直接在地址栏输入URL回车 GET请求
2. a标签 ??????????????????????GET请求
3. form表单 ???????????????????GET/POST请求
4. AJAX ???????????????????????GET/POST请求

AJAX特点

特点

1. 异步
2. 局部刷新浏览器(偷偷发请求)

缺点

请求零碎,滥用对服务端压力大

语法

$.ajax({url: ‘/check/‘, ???????// 往哪里发type: ‘post‘, ???????// 以什么方式发data: {username: $username}, ???// 发送的数据success: function (arg) { ???????// 请求得到相应的时候要执行的 ???console.log(arg); ???$(".e1").text(arg).css(‘color‘,‘red‘)}

示例

<!DOCTYPE html><html lang="en"><head> ?<meta charset="UTF-8"> ?<meta http-equiv="x-ua-compatible" content="IE=edge"> ?<meta name="viewport" content="width=device-width, initial-scale=1"> ?<title>AJAX局部刷新实例</title></head><body><input type="text" id="i1">+<input type="text" id="i2">=<input type="text" id="i3"><input type="button" value="AJAX提交" id="b1"><script src="/static/jquery-3.2.1.min.js"></script><script> ?$("#b1").on("click", function () { ???$.ajax({ ?????url:"/ajax_add/", ?????type:"GET", ?????data:{"i1":$("#i1").val(),"i2":$("#i2").val()}, ?????success:function (data) { ???????$("#i3").val(data); ?????} ???}) ?})</script></body></html>
ajax_demo1.html
from django.shortcuts import renderfrom django.http import JsonResponsedef ajax_demo1(request): ???return render(request, "ajax_demo1.html")def ajax_add(request): ???i1 = int(request.GET.get("i1")) ???i2 = int(request.GET.get("i2")) ???ret = i1 + i2 ???return JsonResponse(ret, safe=False)
views.py
urlpatterns = [ ???... ???url(r‘^ajax_add/‘, views.ajax_add), ???url(r‘^ajax_demo1/‘, views.ajax_demo1), ???... ??]
urls.py

如何设置csrf_token

方式一

通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。

$.ajax({ ?url: "/cookie_ajax/", ?type: "POST", ?data: { ???"username": "Q1mi", ???"password": 123456, ???"csrfmiddlewaretoken": $("[name = ‘csrfmiddlewaretoken‘]").val() ?// 使用jQuery取出csrfmiddlewaretoken的值,拼接到data中 ?}, ?success: function (data) { ???console.log(data); ?}})

方式二

自己写一个js文件获取返回的cookie中的字符串 放置在请求头中发送。

放在/static/

function getCookie(name) { ???var cookieValue = null; ???if (document.cookie && document.cookie !== ‘‘) { ???????var cookies = document.cookie.split(‘;‘); ???????for (var i = 0; i < cookies.length; i++) { ???????????var cookie = jQuery.trim(cookies[i]); ???????????// Does this cookie string begin with the name we want? ???????????if (cookie.substring(0, name.length + 1) === (name + ‘=‘)) { ???????????????cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); ???????????????break; ???????????} ???????} ???} ???return cookieValue;}var csrftoken = getCookie(‘csrftoken‘);function csrfSafeMethod(method) { ???// these HTTP methods do not require CSRF protection ???return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));}$.ajaxSetup({ ???beforeSend: function (xhr, settings) { ???????if (!csrfSafeMethod(settings.type) && !this.crossDomain) { ???????????xhr.setRequestHeader("X-CSRFToken", csrftoken); ???????} ???}});
setupajax.js

用到AJAX的请求方式为post时候,提前导入一下文件即可

<script src="/static/setupajax.js"></script>

Django高级-AJAX应用

原文地址:https://www.cnblogs.com/sunch/p/9750275.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved