今日内容:

1.choices字段(也可以成为参数)

2.MTV与MVC模型

3.contentType前后端传输数据编码格式

4.Ajax

5.序列化组件

6.Ajax结合sweetalert组件

7.自定义分页器的使用

1.choices字段(也可以称为参数)

建立一个对应关系的,比如说有一个性别字段,分为男和女,你写字符比较占用资源,可以用数字来代表,用choices来建立一个对应关系,比如说0代表男,1代表女,这样数量一旦多了起来,就大大的节省了资源。

代码实现:models里面

class User(models.Model):username = models.CharField(max_length=32)age = models.IntegerField()choices = ((1,'男'),(2,'女'),(3,'其他'))gender = models.IntegerField(choices=choices)
1 存choice里面罗列的数字与中文对应关系     print(user_obj.get_gender_display())        只要是choices字段 在获取数字对应的注释 固定语法        get_choices字段名_display()

2 存没有罗列出来的数字    不会报错 还是展示数字

测试文件:tests里面固定写法
user_obj = models.User.objects.filter(pk=7).first()

print(user_obj.get_gender_display())
"""只要是choices字段 在获取数字对应的注释 固定语法get_choices字段名_display()"""

2.MTV与MVC模型

MTV与MVC模型django框架 自称为是MTV框架M:modelsT:templatesV:viewsMVCM:modelsV:viewsC:controller 控制器(urls)ps:
本质上MTV其实也是MVC    

3.contentType前后端传输数据编码格式

前后端传输数据编码格式
1.urlencoded
2.formdata
3.json

form表单:

默认使用的编码和格式是urlencoded数据的格式:name=jason&pwd=123  就是什么等于什么django后端针对urlencoded编码格式的数据会自动解析并放到request.POST中供用户获取我们也可以修改为formdata 来传文件:
django后端针对只要是符合urlencoded编码格式的数据(name=jason&pwd=123)都会自动解析并放到request.POST中供用户获取如果是文件 只要你指定的编码是formdata 就会自动解析并放到request.FILES中
总结:前后端传输数据的时候 一定要保证数据格式和你的编码格式是一致的 不能骗人家!!!前端代码:

1 <form action="" method="post" enctype="multipart/form-data">
2     username:<input type="text" name="name">
3     password:<input type="text" name="pwd">
4     info:<input type="file" name="myfile">
5     <input type="submit">
6 </form>

View Code

后端代码:

1 def index(request):
2     # 验证前后端传输数据的编码格式
3     if request.method == 'POST':
4         print('request.POST',request.POST)
5         print('request.FILES',request.FILES)
6     return render(request,'index.html')

View Code

Ajax提交数据:

ajax默认数据提交方式也是urlencoded
ajax发送json格式数据django后端针对json格式的数据 并不会自动解析放到request.POST或者request.FILES里面
它并不会解析json格式数据 而是将它原封不动的放在request.body中了

4.Ajax简介:

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(这一特点给用户的感受是在不知不觉中完成请求和响应过程)AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

简单来说:

异步提交,局部刷新请求方式 GET  POSTa标签href属性    GET请求浏览器窗口输入url   GET请求form表单     GET/POSTAjax     GET/POST首先Ajax这门技术是js中的,但是原生的js操作Ajax比较繁琐,我们这里为了提高效率,直接使用jQuery封装版本的Ajax

Ajax基本语法:url:提交的地址(不写的话就朝当前的地址发送)type:提交的方式data:提交的数据success:回调函数

基于Ajax写一个小列子:

页面上有三个input框
在前两个input框中输入数字
点击按钮 发送ajax请求 不刷新页面的情况下
第三个框中自动算出两数之和

前端:

 1 <input type="text" id="i1">+<input type="text" id="i2">=<input type="text" id="i3">
 2 <button id="b1">求和</button>
 3
 4
 5 <script>
 6     $('#b1').on('click',function () {
 7         //点击按钮 朝后端发送post请求
 8         $.ajax({
 9             url: '', // 控制发给谁,不写就是朝当前地址提交
10             type: 'post', //发送方式是post请求
11             data:{'i1':$('#i1').val(),'i2':$('#i2').val()}, // 发送的数据,点val是拿到input框里面的值
12             success:function (data) { //data形参是用来接收异步提交的结果的 ,回调函数
13                 {#alert(data)#}
14                 //将后端计算好的结果,通过DOM操作,渲染到第三个input框中
15                 $('#i3').val(data)
16             }
17         })
18     })

View Code

后端:

 1 def index(request):
 2     # print(request.is_ajax())  # 可以用来判断当前请求方式是否为ajax请求
 3     if request.is_ajax():
 4         if request.method == 'POST':
 5             # 获取提交过来的数据,然后进行相加
 6             i1 = request.POST.get('i1')
 7             i2 = request.POST.get('i2')
 8             # 不能直接相加,因为后端获取的前端数据,都是字符串格式
 9             res = int(i1) + int(i2)
10             return HttpResponse(res)
11     return render(request,'index.html')

View Code

Ajax提交json格式的数据:

ajax默认数据提交方式也是urlencoded
ajax发送json格式数据django后端针对json格式的数据 并不会自动解析放到request.POST或者request.FILES里面
它并不会解析json格式数据 而是将它原封不动的放在request.body中了

需要注意的点:前端

1.你需要告诉后端这次你提交的是json格式的数据:

contentType:'application/json'2.你需要把你的数据转为json格式,因为前后端传输数据的话,一定要保证数据格式和你的编码格式是一致的
后端要注意的点:1.后端接收数据的时候,必须要自己处理一下数据,数据再body里面,先解码,然后在loads反序列化一下

前端代码:

 1
 2 <input type="text" id="i1">+<input type="text" id="i2">=<input type="text" id="i3">
 3 <button id="b1">求和</button>
 4
 5   $('#b1').on('click',function () {
 6     //点击按钮 朝后端发送post请求
 7     $.ajax({
 8         url: '', // 控制发给谁,不写就是朝当前地址提交
 9         type: 'post', //发送方式是post请求
10         data:JSON.stringify({'username':'zy','password':123}), // 发送json格式的数据,需要明确的指定一下
11         contentType:'application/json',//告诉后端你这次的数据是json格式
12         success:function (data) { //data形参是用来接收异步提交的结果的 ,回调函数
13             {#alert(data)#}
14             //将后端计算好的结果,通过DOM操作,渲染到第三个input框中
15             $('#i3').val(data)
16         }
17     })
18 })

View Code

后端代码:

 1 def index(request):
 2
 3     if request.method == 'POST':
 4         print('request.POST',request.POST)
 5         print('request.FILES',request.FILES)
 6         # print(request.body)  # 打印出来是二进制数据
 7         # 后端需要手动去request.body中获取json格式数据,然后自己处理
 8         json_str = request.body
 9         import json
10         dic_bytes = json_str.decode('utf-8')
11         rel_d = json.loads(dic_bytes)
12         print(rel_d)
13     return render(request,'index.html')

View Code

Ajax传输文件数据:

注意点:

1.Ajax传输文件数据建议使用内置队象formdata:
var formData = new FormData();
因为formDatafeicha非常牛逼,既可以传普通的键值对,也可以传文件
2.添加普通的键值:formData.append();3.传文件,如何获取文件标签所存储的文件对象。固定语法
1.先用jQuery查找到存储文件的input标签
2.将jQuery查找到存储文件的input标签
3.利用原生js对象的方法去点files[0]获取到标签内部存储的文件对象formData.append('my_file',$('#d1')[0].files[0]);注意:ajax发送文件需要指定俩个额外的参数
processData:false,//告诉前端不要处理数据
contentType:false,//不适用任何编码,因为formdata对象自身自带编码 django后端也能够识别formdata对象

前端代码:

 1 <button id="b1">求和</button>
 2
 3 {#ajax上传文件#}
 4 <input type="file" id="d1">
 5
 6
 7 $('#b1').on('click',function () {
 8     // ajax传输文件 建议使用内置对象formdata
 9      var formData = new FormData(); //既可以传普通的键值对,也可以传文件
10      // 添加普通的键值
11      formData.append('username','zy');
12      formData.append('password','123');
13      //传文件,如何获取文件标签所存储的文件对象。固定语法
14      //1.先用jQuery查找到存储文件的input标签
15      //2.将jQuery查找到存储文件的input标签
16      //3.利用原生js对象的方法去点files[0]获取到标签内部存储的文件对象
17      formData.append('my_file',$('#d1')[0].files[0]);
18     $.ajax({
19         url: '', // 控制发给谁,不写就是朝当前地址提交
20         type: 'post', //发送方式是post请求
21         data:formData, // 发送数据
22         // ajax发送文件需要指定俩个额外的参数
23         processData:false,//告诉前端不要处理数据
24         contentType:false,//不适用任何编码,因为formdata对象自身自带编码 django后端也能够识别formdata对象
25         success:function (data) { //data形参是用来接收异步提交的结果的 ,回调函数
26             {#alert(data)#}
27             //将后端计算好的结果,通过DOM操作,渲染到第三个input框中
28             $('#i3').val(data)
29         }
30     })
31 })

View Code

后端代码:

1 def index(request):
2
3     if request.method == 'POST':
4         print('request.POST',request.POST)
5         print('request.FILES',request.FILES)
6         return HttpResponse('OK')
7
8     return render(request,'index.html')

View Code

5.序列化组件

from django.core import serializers  # django自带的一个小型的序列化工具
def reg(request):user_list = models.User.objects.all()# 将所有的数据都组织成一个符合json的一个个的字典# user_l = []# for user_obj in user_list:#     user_l.append(#         json.dumps({'username':user_obj.username,#          'age':user_obj.age,#          'gender':user_obj.get_gender_display()#          })#     )res = serializers.serialize('json',user_list)  #
    return render(request,'index.html',locals())

转载于:https://www.cnblogs.com/zahngyu/p/11575571.html

django框架 day07相关推荐

  1. Django框架之第二篇

    Django框架之第二篇 一.知识点回顾 1.MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). view ...

  2. Windows上python开发--2安装django框架

    Windows上python开发--2安装django框架 分类: 服务器后台开发2014-05-17 21:22 2310人阅读 评论(2) 收藏 举报 python django 上一篇文章中讲了 ...

  3. Python技术学习之Django框架设计思想

    Python是目前比较流行的计算机编程语言,据用丰富和强大的库,被称为胶水语言,能够把用其他语言制作的各种模块很轻松地联结在一起. Python功能强大,用途广泛,可广泛应用于云计算.web开发.科学 ...

  4. django框架使用mysql报错,及两种解决方法

    1.django框架 settings.py文件中部分代码: DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# ...

  5. django框架--路由系统

    目录 一.路由系统理解 二.路由系统功能划分 三.路由表创建 创建工具 二级路由 路由别名 动态路由及重定向 四.自定义错误页面 五.图示路由系统在框架中的定位 六.路由系统的进阶想法 一.路由系统理 ...

  6. Python3搭建Django框架浅析

    前言 Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django 是一个开放源代码的 Web 应用框架,由 Pyt ...

  7. Django框架学习索引

    索引目录 1.Django介绍与安装 2.Django流程及模式 3.Django基本配置 4.Django模板(Templages) 1.Django的介绍和安装 3.Django框架模式 4.数据 ...

  8. Django 框架入门篇(安装与创建项目)

    什么是Django框架? 官方定义:Django是一个高级Python Web框架,鼓励快速开发和简洁实用的设计.它由经验丰富的开发人员构建,可以解决大部分Web开发的麻烦,因此您可以专注于编写应用程 ...

  9. 第九章 Django框架——csrf请求伪造和csrf_token使用

    第九章 Django框架--csrf请求伪造和csrf_token使用 一.csrf请求伪造 二.csrf_token使用 三.简单的csrf_token应用 四.Ajax使用csrf_token 一 ...

最新文章

  1. WordPress页面Page和文章Post的相互转换
  2. Scikit-learn 更新至 0.24 版,这 10 个新特性你需要了解
  3. mysql $lt_MongoDB与Mysql常用命令解释
  4. 前端一HTML:十五: 层叠,权重,优先级的关系
  5. cmakelist .so_卡罗拉汽车音响改装SO匠心三分频,黄金声学
  6. Webshell免杀绕过waf
  7. (转)淘淘商城系列——maven工程debug调试
  8. 【报告分享】2020中国企业数字化转型研究报告-清华大学.pdf(附下载链接)
  9. 流媒体相关资源下载地址(整理)
  10. 常见的SSL证书错误代码及解决方法
  11. 企业技术中心申报条件
  12. 论文的可复现性,能否量化分析?
  13. AcWing 1714.混合牛奶
  14. 三个常见博弈游戏以及 SG 函数和 SG 定理
  15. word设置每页50行
  16. css3论坛,css3学习参考手册
  17. php发送邮箱乱码,PHP使用STMP发送电子邮件,PHP使用STMP发送电子邮件乱码解决
  18. Java如何模拟双色球彩票系统?
  19. 怎么把计算机设置在桌面显示器,笔记本怎么设置双屏显示 双屏显示设置方法...
  20. 网易100天---26、What Is Artificial Intelligence (AI)?

热门文章

  1. 超过8000星的「机器学习路线图」,福利。
  2. 并发服务器模型——多线程服务器
  3. 正则表达式 转义字符(转)
  4. tomcat6配置log4j日志
  5. JMS学习之ActiveMQ-简单使用
  6. 矩阵乘法Strassen算法
  7. alternatives命令用法
  8. Linux学习笔记13
  9. 运维笔记 - Nginx
  10. redis和sqlserver数据同步_SQLServer数据库之redis数据库的数据导入到SQLServer数据库中...