今日学习目标
- 学习Django框架(视图层)
文章目录
学习内容
- 虚拟环境
- django路由层版本区别
- 视图函数的返回值
- 接收文件数据
- FBV与CBV(基于函数的视图、基于类的视图)
- 模板语法传值
一、虚拟环境
不同的项目应该有各自独立的解释器环境,最大化节省资源,实际功能中针对不同项目只会安装该项目所用到的模块,用不到的一概不装。
诸多项目在你的机器上如何无障碍的打开并运行
- 方式1:把所有需要用到的模块全部下载下来 如果有相同模块不同版本每次都重新下载替换
- 方式2:提前准备好多个解释器环境 针对不同的项目切换即可
创建虚拟环境
相当于在下载一个全新的解释器
识别虚拟环境
文件目录中有一个venv文件夹
如何切换环境
选择不用的解释器即可 全文不要再次勾选new enviroment...
注意
每创建一个虚拟环境,就类似于重新下载了一个纯净的python解释器
虚拟环境不要创建太多个,会占用内存。
二、django路由层版本区别
django1.X和django2.X及以上
-
urls.py中1.x用的是url,而2.x用的是path
并且2.x中的path第一个不支持正则表达式,写什么就匹配什么
如果你觉得不好用,2.x里面还有re_path 这个re_path就是你1.x里面的urlfrom django.urls import path,re_path
-
path方法提供了转换器功能
path('index/<int:id>/', index)
匹配对应位置的数据并且自动转换类型
‘’‘有五种转换器可供选择’‘’
参考:https://blog.csdn.net/weixin_49111957/article/details/109754240
三、视图函数的返回值
当浏览器向服务器发起数据请求的时候,那么服务器用来响应的视图函数的返回值的种类有两种,分别是HTML响应(HttpResponse、render、redirect)和JsonResponse(前后端分离)
HTML响应
- (1)HttpResponse
不使用模板,直接HttpResponse()
例子:创建视图函数
def testResponse(request):
response = HttpResponse()
response.content ='英雄联盟'
response.status_code = 404
# 直接写出文本
response.write('亚索')
# 一次性读取剩余字节,冲刷缓存区
response.flush()
return response
结果
- (2)render
render方法的返回值类型也是一个HttpResponse
例子:对render进行剪切一下,方便查看类型
def testRender(request):
response = render(request,'testRender.html')
print(type(response))
return response
结果
- (3)Redirect
重定向
其是HttpResponse的子类,响应重定向:可以实现服务器内部跳转
def testRedirect(request):
# 重定向就是执行其他的视图函数
return HttpResponseRedirect('/res/index/')
结果
2.JsonResponse
django的视图函数,是不可以直接返回data的
JsonResponse 缺点:1.中文乱码 2.序列化
解决中文乱码方案:
def testJson(request):
data = {
'msg': 'ok',
'status': 200,
'name': '张三',
}
# 忽略编码
return JsonResponse(data=data,json_dumps_params={
'ensure_ascii':False})