AJAX

一、choice参数

#用户表格
class Userinfo(models.Model):    
#字段    
username = models.CharField(max_length=255)    
choice = 
(        
(1,'早退'),        
(2,'迟到'),        
(3,'缺课'),              
)    
state = models.IntegerField(choices=choice)

针对choice字段 如果你想获取数字所对应的中文 不能直接点字段

固定句式

print(数据对象.get_字段名_display())

当没有对应关系的时候 该句式获取到的还是数字 没有意义

不仅可以使用数字 也可以使用 英文 或者成绩分数代表 等级

    record_choices = (('checked', "已签到"),
                  ('vacate', "请假"),
                  ('late', "迟到"),
                  ('noshow', "缺勤"),
                  ('leave_early', "早退"),
                  )
    record = models.CharField("上课纪录", choices=record_choices, default="checked", 
 score_choices = ((100, 'A+'),
                 (90, 'A'),
                 (85, 'B+'),
                 (80, 'B'),
                 (70, 'B-'),
                 (60, 'C+'),
                 (50, 'C'),
                 (40, 'C-'),
                 (0, ' D'),
                 (-1, 'N/A'),
                 (-100, 'COPY'),
                 (-1000, 'FAIL'),
                 )
    score = models.IntegerField("本节成绩", choices=score_choices, default=-1)

二、MTV与MVC模型

MTV:

​ M: models

​ T: templates

​ V: views

MVC:

​ M: models

​ V: views

​ C: con

三、AJAX

异步提交

​ 同步异步: 描述的任务的提交方式

​ 同步:提交任务之后 原地等待任务的返回结果 期间不干任何事

​ 异步:提交任务之后 不原地等待 直接执行下一行代码 任务的返回通过回调机制

​ 阻塞非阻塞:程序的运行状态

Ajax是一门js的技术 基于原生的js开发的 但是用原生的JS写代码过于繁琐

主要就是 JQuery实现AJAX

AJAX 最大的有点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

(这一特点给用户的感受是在不知不觉中完成请求和相应的过程)

AJAX准备知识:json

AJAX传json格式数据

​ django 后端对JSON格式的数据 不会自动帮你解析 会直接原封不懂的给你放到request.POST中

你可以手动处理获得数据

什么是json?

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

JSON使用javascript 语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言

						python 可以转换成JSON的数据类型
							JSON			python
    
							object			dict			
							arary			list、tuple
							string			str
							number			int、float
							ture			True
							false			Flase
							null			non'e

CSRF(跨站请求伪造):

使用AJAX发送post请求:

第一种:

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

第二种:用自己写的getCookie方法

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);
 }

将下面的文件配置到你的Django项目的静态文件中,在html页面上通过导入该文件即可自动帮我们解决ajax提交post数据时校验csrf_token的问题,(导入该配置文件之前,需要先导入JQuery,因为这个配置文件内的内容是基于jQuery来实现的)

posted @ 2019-10-28 21:06  Daoqi  阅读(102)  评论(0编辑  收藏  举报