zoukankan      html  css  js  c++  java
  • 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='')自动创建第三张表
    
    
  • 相关阅读:
    HDU 4334
    HDU 1280
    HDU 1060
    HDU 4033
    大三角形分成4个面积相等的小三角形
    HDU 1087
    HDU 4313
    Sleep(0)及其使用场景
    Decorator(装饰、油漆工)对象结构型模式
    Debug Assertion Failed!
  • 原文地址:https://www.cnblogs.com/ye-hui/p/10248013.html
Copyright © 2011-2022 走看看