当前位置:
首页 > Python基础教程 >
-
python基础教程之Web框架之Django_03 路由层了解(路(2)
首先在url路由层视图那里: views.MyCls.as_view() 我们在源码中看到as_view()返回的是一个view的函数名,那么上面的可以写成: views.view 也就是这样: url(r'^mycls/',views.view) 也就是说变成了一个视图函数,所有接下来我们还得看看View类中的view方法的内容 当浏览器发出路由请求,匹配到前面的mycls就会调用后面的视图函数view(request)
继续查看dispatch函数代码:
所以最好view(request)函数的调用最后变成了这样:MyCls类实例化对象self.post(request),我们再看看MyCls类的内容:
这里就实现了通过类视图,创建的相对于类来通过post和get(或者其它更多请求方式)来判断请求方式进行不同的操作,达到和函数视图方式一样的结果。
补充一个http请求方法列表:
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
至此基于类的视图实现过程分析完成,整个过程走下来,发现实现的目的和函数视图如出一辙,只不过用类来实现会多走基本路。条条道路通罗马,只有有想法,什么方法都是方法,能达到目的就行,๑乛◡乛๑
JsonResponse(将相应的数据自动转换成json格式,然后直接发送回浏览器)#
导入模块 from django.http import JsonResponse import json 原始方法: def index(request): res = {'name':'sgt','password':18} return HttpResponse(json.dumps(res)) JsonResponse方法: def index(request): return JsonResponse( {'name':'sgt','password':'1888888'}, json_dumps_params={'ensure_ascii':False} ) 注意:json_dumps_params={'ensure_ascii':False}这个的作用是,将Django默认转码功能取消,这样就能显示汉字了。
实现过程:
前端:
<body> <h1>index</h1> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="my_file"> <input type="submit"> </form> </body>
前端需要注意的点:
1.method需要指定成post
2.enctype需要改为multipart/form-data格式
后端:
def index(request):
if request.method == 'POST':
file_obj = request.FILES.get('my_file')
print(file_obj.name)
with open(file_obj.name,'wb') as f:
for line in file_obj.chunks():
f.write(line)
return HttpResponse('成功')
return render(request, 'index.html')
后端需要注意:
1.配置文件中注释掉csrfmiddleware
2.通过request.FILES获取用户上传的post文件数据
补充:request中有很多属性,这里说说里面的2个属性:path和full_path的区别:
def login(request): print('path:',request.path) print('full_path:',request.get_full_path()) if request.method == 'POST': return HttpResponse('登录成功') return render(request, 'login.html') path: /login/ full_path: /login/?name=jason 如果路由后面有拼接字符串,会显示
作者: suguangti
出处:https://www.cnblogs.com/suguangti/p/10999128.html
版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式