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='')自动创建第三张表
 

猜你喜欢

转载自www.cnblogs.com/ye-hui/p/10248013.html