django学习第79天Django视图层
Posted ye-hui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django学习第79天Django视图层相关的知识,希望对你有一定的参考价值。
一.request对象
method:请求方式
GET:get请求的参数(post请求,也可以携带参数)
POST:post请求的参数(本质是从bdoy中取出来,放到里面了)
COOKIES--->后面讲
META:字典(放着好多东西,前端传过来的,一定能从其中拿出来,包括客户端的Ip,客户端的所有请求)
body:post提交的数据
path:请求的路径,不带参数
request.get_full_path() 请求路径,带参数 (这参数是指?id=10这种的)
session---后面讲
user---后面讲
FILES
encoding:编码格式
is_ajax()---后面讲(判断是否是ajax请求)
二.HttpResponse对象
-三件套(render.redirect.reverse)
render(request, ‘模板名字‘,{key:value})
-JsonResponse:往前端返回json格式数据(没有它,我可以自己写)
-转列表格式:指定safe=False
-中文字符问题:json_dumps_params={‘ensure_ascii‘:False}
本质封装了json.dumps
# 第一种方式 # import json # data={‘name‘:‘lqz‘,‘age‘:18} # data1=[‘lqz‘,‘egon‘] # return HttpResponse(json.dumps(data1)) # 第二种方式 from django.http import JsonResponse # data = {‘name‘: ‘lqz‘, ‘age‘: 18} data1 = [‘lqz‘, ‘egon‘] # return JsonResponse(data) return JsonResponse(data1,safe=False)
三.CBV(基于类的视图)和FBV(基于函数的视图)
-cbv:一个路由写一个类
-在视图层先定义一个类:继承自View
from django.views import View
class MyClass(View):
# 当前端发get请求,会响应到这个函数
def get(self, request):
return render(request,‘index.html‘)
# 当前端发post请求,会响应到这个函数
def post(self,request):
print(request.POST.get(‘name‘))
return HttpResponse(‘cbv--post‘)
-在路由层:
re_path(‘^myclass/$‘,views.MyClass.as_view()),
四.文件上传
-form表单默认提交的编码方式是enctype="application/x-www-form-urlencoded"
-前端:如果要form表单上传文件,必须指定编码方式为:enctype=multipart/form-data,method=‘post
-后端:
file=request.FILES.get(‘myfile‘)
#打开空文件,用for 循环读file,写入空文件
with open(file.name,‘wb‘) as f: #文件路径要先拼接好(os.path.jion(path,file.name),没设置默认在该项目目录下
for line in file:
f.write(line)
五.图书表设计
图书管理系统
-表:
book表
author表
publish表
-一对一:一对多的关系一旦确立,关联字段写在哪都可以 对应orm中的models.OneToOneField(to=‘‘,to_filed=‘‘)
-一对多:一对多的关系一旦确立,关联关系写在多的一方 对应orm中的models.ForeignKey(to=‘‘,to_filed=‘‘)
-多对多:多对多的关系,必须创建第三张表(中间表) 对应orm中的models.ManyToManyField(to=‘‘)自动创建第三张表
以上是关于django学习第79天Django视图层的主要内容,如果未能解决你的问题,请参考以下文章