zoukankan      html  css  js  c++  java
  • 视图系统

    一、实质

    接收请求并返回响应

    位置:views,py

    二、分类

    1、CBV  class base view

    .views.py文件

    from django.views import View
    class Test(View):
        # get请求
        def get(self, request):
            return render(request, "test.html")
        
        # post请求
        def post(self, request):
            pass

    .urls.py文件

    path('test/', views.Test.as_view()),

    注意:as_view()是方法

    2、FBV  function base view

    .views.py文件

    def test(request):
        # post请求
        if request.method == "POST":
            pass
        # get请求
        return render(request, "test.html")

    .urls文件

    path('test/', views.test),

    三、请求

    1、request.method    
        获取请求的方式(POST、GET)
    2、request.GET
        GET请求方式
        应用场景:获取网址、搜索引擎索引
        注意:长度有限,无隐私,获取的结果是字典
    3、requset.POST
        POST请求方式
        应用场景:表单提交、文件输出、隐私数据
        注意:获取的结果是字典
    4、request.path_info(了解)
        获取:url 不包含IP、端口和参数

    四、响应

    基础三件套

    1、HttpResponse()
        作用:返回数据
    2、render(request, "")
        作用:返回HTML和修改模板语言(替换字符串)
    3、redirect("")
        作用:重定向网址

    基础三件套导入模块

    from django.shortcuts import render
    from django.shortcuts import redirect
    from django.shortcuts import HttpResponse

    序列化

    # python
    import json
    def json_test(request):
        dic = {'name': 'tom', 'age': 23}
        dic_str = json.dumps(dic)
        return HttpResponse(dic_str)
    # Django
    from django.http import JsonResponse
    def json_test(request):
        dic = {"name": 'tom', "age": 23}
        return JsonResponse(dic)

     注意:序列化只能是字典,当是其它类型时,safe=False

    五、上传文件的例子

    def test(request):
        request.FILES
        if request.method == "POST":
            filename = request.FILES.get("upload_file").name
            print(filename)
            with open(file=filename, mode="wb") as f:
                for i in request.FILES.get("upload_file").chunks():
                    f.write(i)
            return HttpResponse("上传成功")
        return render(request, "test.html")
  • 相关阅读:
    [py]函数小结
    [py]class的特殊方法
    [py]数据描述符优先级
    [py]python中__new__作用
    [py]django重置密码
    [py]多态的理解
    [py]类属性和实例属性
    【转】比较详细的Asp伪静态化方法及Asp静态化探讨
    VB6 XArrayDB | Xarray ReDim 用法
    vb6 使用msxml2.serverxmlhttp 请求HTTP
  • 原文地址:https://www.cnblogs.com/wt7018/p/11256972.html
Copyright © 2011-2022 走看看