views 视图层
Posted msj513
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了views 视图层相关的知识,希望对你有一定的参考价值。
1.request对象
method:请求方式 GET:get请求的参数(post请求,也可以携带参数)
POST:post请求的参数(本质是从bdoy中取出来,放到里面了)
COOKIES--->后面讲 META:字典(放着好多东西,前端传过来的,一定能从其中拿出来)
body:post提交的数据 path:请求的路径,不带参数
request.get_full_path() 请求路径,带参数
session---后面讲 user---后面讲
FILES encoding:编码格式
is_ajax()---后面讲
2HttpResponse
-JsonResponse:往前端返回json格式数据(没有它,我可以自己写) -转列表格式:指定safe=False -中文字符问题:json_dumps_params={‘ensure_ascii‘:False}
def jsonre(request): dic = {‘name‘:‘msj‘,‘pwd‘:"123"} #from django.http import JsonResponse # 最基础的支持字典形式 # return JsonResponse(dic) #想要支持其他格式的json对象的话,取消safe=False设置 return JsonResponse([dic],safe=False)
3 wsgiref,uwsgi, 都遵循wsgi协议
—遵循一个协议wsgi(web server Gateway interface web 服务网关接口)
wsgiref单线程,不支持高并发,uwsgi 支持高并发
4 CBV(基于类的视图)和FBV(基于函数的视图)
CBV 必须继承
views文件中
from django.views import View
类的固定模式
class Myclass(View): def dispatch(self,request,*args,**kwargs): #逻辑代码块 res= super().dispatch(request,*args,**kwargs) return def get(self,request): #逻辑代码块 return HttpResponse(‘cbv--get‘) def post(self,request): #逻辑代码块 return HttpResponse(‘cbv--post‘)
在路由中的使用方法
url(‘^mycass/$‘,views.MyClass.as_view()) #需要加()执行,获得相应的地址
5 文件上传
-form表单默认提交的编码方式是enctype="application/x-www-form-urlencoded" -前端:如果要form表单上传文件,必须指定编码方式为:multipart/form-data -后端:
def upload(request): if request.method == "GET": return render(request,‘upload.html‘) else: #浏览器上传的文件使用的是post方法,而具体对象在request对象.Files.get("name") file = request.FILES.get(‘ss‘) with open(file.name,‘wb‘) as f: for line in file: f.write(line) return HttpResponse("上传成功")
6 前端提交数据编码格式:
-multipart/form-data(上传文件) -application/x-www-form-urlencoded(默认编码)
<form action="/upload/" method="post" enctype="multipart/form-data"> <input type="file" name="ss"> <input type="submit" value="提交"> </form>
7 图书管理系统表分析:
图书管理系统 -表: book表 author表 publish表
-一对一:一对多的关系一旦确立,关联字段写在哪都可以
-一对多:一对多的关系一旦确立,关联关系写在多的一方
-多对多:多对多的关系,必须创建第三张表(中间表)
以上是关于views 视图层的主要内容,如果未能解决你的问题,请参考以下文章