zoukankan      html  css  js  c++  java
  • 3 视图层

    一、MTV 与 MVC 模型

    1 MTV 模型:Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

    • M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
    • T 代表模板 (Template):负责如何把页面展示给用户(html)。
    • V 代表视图(View):   负责业务逻辑,并在适当时候调用Model和Template。

    2 MVC 模型:

    MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求。

    二、HTTPRequest 对象

    1 request 参数

    (1)request.GET.get('属性'):GET是 Django 在源码中进行了处理,伪装成了一个属性。

    (2)request.method:请求的类型

    (3)request.path:表示没有 ? 后边数据的路径,这是一个属性

    (4)request.get_full_path():表示带有 ? 后面数据的路径,这是一个方法

    (5)request.body:表示 form 表单中提交之后的 b'data'

    三、HttpRequest.META

    标准的 python 字典,包含所有的 HTTP 首部。具体的头部信息取决于客户端和服务器:

        CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。
        CONTENT_TYPE —— 请求的正文的MIME 类型。
        HTTP_ACCEPT —— 响应可接收的Content-Type。
        HTTP_ACCEPT_ENCODING —— 响应可接收的编码。
        HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。
        HTTP_HOST —— 客服端发送的HTTP Host 头部。
        HTTP_REFERER —— Referring 页面。
        HTTP_USER_AGENT —— 客户端的user-agent 字符串。
        QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。
        REMOTE_ADDR —— 客户端的IP 地址。
        REMOTE_HOST —— 客户端的主机名。
        REMOTE_USER —— 服务器认证后的用户。
        REQUEST_METHOD —— 一个字符串,例如"GET""POST"。
        SERVER_NAME —— 服务器的主机名。
        SERVER_PORT —— 服务器的端口(是一个字符串)。

    四、JsonResponse

    from django.http import JsonResponse
    JsonResponse 是向前端页面发送 Json 格式的字符串
    在用 JsonResponse 时,若传给前端的数据并非 Json 格式,需要在参数中设置 safe=False

    五、CBV 和 FBV

    1 CBV(class base view)基于类的视图函数

    from django.views import View
    
    class Test():
         def dispatch():  最先执行,判断是 get 还是 post 方法,然后分配给 get 或者 post
            code...         可进行逻辑处理
            return obj    这个返回值是 get 传过来的
        
        def get(self,request):
            obj=render(request,'index.html')
            return obj
    
        def post(self,request):
            return HttpResponse('post')
    
    使用的时候:
    re_path(r'pattern',views.Test.as_view())  相当于执行了一个方法

    2 FBV(function base view)基于方法的视图函数

    pass

    六、简单的文件上传

    1 HTML 页面

    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="myfile">
        <input type="submit">
    </form>
    
    注意:enctype 必须指定,这个是文件的编码格式

    2 视图函数中

    file=requet.FILES.get("myfile")
    file_name=file.name
    with open(file_name,"wb") as f:
        for line in file.chunks():
            f.write(line)
    
    
    说明:
    file 是 Django 封装过的文件对象
    chunks() 是 Django 中的一个内置方法
  • 相关阅读:
    Java内置包装类
    for循环思路题
    常用函数
    函数
    冒泡排序
    数组的运用
    for循环中有意思的练习题。
    for循环
    运算中容易出现的错误
    分支的运用
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9629164.html
Copyright © 2011-2022 走看看