• 计算机基础知识52


    三板斧的使用

    HttpResponse: 字符串
    render: 渲染html页面
    redirect: 重定向的

    # 在视图文件中写视图函数的时候不能没有返回值了,默认返回的是None,页面上就会报错

    1. def render(request, template_name, context=None, content_type=None, status=None, using=None):
    2. content = loader.render_to_string(template_name, context, request, using=using)
    3. return HttpResponse(content, content_type, status)

    JsonReponse序列化类的使用

    # json有什么用:跨语言传输       

            序列化: json.dumps      反序列化: json.loads

    #  向前端返回一个json格式字符串的两种方式

    方式一:

    1. import json
    2. def my_view(request):
    3. data=['egon','kevin']
    4. return HttpResponse(json.dumps(data) )

    方式二:

    1. from django.http import JsonResponse
    2. def my_view(request):
    3. data=['egon','kevin']
    4. return JsonResponse(data,safe=False)
    5. #默认safe=True代表只能序列化字典对象,safe=False代表可以序列化字典以外的对象

    form表单上传文件

    <form action="" method="post">

    表单上传数据需要满足的条件:

            1. 请求方式必须是post

            2. enctype="multipart/form-data"

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js">script>
    7. <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    8. <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js">script>
    9. head>
    10. <body>
    11. <form action="" method="post" enctype="multipart/form-data">
    12. <input type="file" name="myfile">
    13. <input type="submit">
    14. form>
    15. body>
    16. html>

    3、request对象方法:

                    request.method

                    request.POST.get()

                    request.POST.getlist()

                    request.GET.get()

                    request.GET.getlist()

                    request.FILES

                    request.path

                    request.path_info    # 不能接收参数,接收的是后缀

                    request.get_full_path()     # 也能够接收参数

    1. print(request.POST) # 接收的都是普通的数据,非文件数据
    2. print(request.FILES) # 只接受文件数据,普通数据还在request.POST里面
    3. def index(request):
    4. # user_dict = {'username':'kevin你好'}
    5. user_dict = [1, 2, 3, 4]
    6. print(request.POST)
    7. # ]}>
    8. file_obj=request.FILES.get('myfile')
    9. # print(request.body) # 接收纯原生的二进制数据,没有任何的处理 b''----> str---->decode---->dict...
    10. # print(request.POST.get('')) # 之所以你能够直接按照字典的方式取值,是因为django给做了封装
    11. print(request.path) # /index/ /index/
    12. print(request.path_info) # /index/ /index/
    13. print(request.get_full_path()) # /index/ /index/?a=1&b=2
    14. print(request.GET.get(''))
    15. return render(request,'index.html')

    CBV的写法

    # 视图是可调用的,用来处理请求(request)并且返回响应(response),django的视图有两种形式:FBV和CBV

    # FBV: function based view # 写的都是函数

             FBV中视图函数处理HTTP的GET请求如下:

    1. from django.http import HttpResponse
    2. def my_view(request):
    3. if request.method == 'GET':
    4. #
    5. return HttpResponse('GET result')
    6. elif request.method == 'POST':
    7. #
    8. return HttpResponse('POST result')

    CBV: class based view # 写的都是类

            CBV的实现如下:

    1. from django.http import HttpResponse
    2. from django.views import View
    3. class Login(View):
    4. def get(self, request):
    5. #
    6. return HttpResponse('GET result')
    7. def post(self, request):
    8. #
    9. return HttpResponse('POST result')

    CBV的源码分析

    1. # 入口
    2. url(r'^login/', views.MyLogin.as_view()),
    3. # View类中得as_view方法的返回值是view函数名
    4. # 当请求来的时候,会触发view函数的执行
    5. def view(request, *args, **kwargs):
    6. # cls:Mylogin()------>self对象
    7. self = cls(**initkwargs)
    8. return self.dispatch(request, *args, **kwargs) # View类里的dispatch
    9. def dispatch(self, request, *args, **kwargs):
    10. if request.method.lower() in self.http_method_names:
    11. handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
    12. else:
    13. handler = self.http_method_not_allowed
    14. return handler(request, *args, **kwargs)
    15. from django.views import View
    16. class MyLogin(View):
    17. http_method_names = ['get', 'post']
    18. def get(self, request):
    19. print('get。。。')
    20. self.index()
    21. return HttpResponse("get")
    22. def post(self, request):
    23. return HttpResponse("hello postman!!!")
    24. def index(self):
    25. pass

    权限、频率、jwt的源码

    模板层之模板变量

    # PHP:不是后端语言,前端 操作数据量,写逻辑,都可以

            在html页面中写一个python的代码
    # 在模板中取值的时候,使用的是点语法(.)

    # 在模板中得函数调用的时候不要加括号,自动加括号,只需写函数名

    {{ 写变量 }}
    {% 写逻辑 %}

    1. {{ d.0 }}
    2. {{ d.1 }}
    3. {{ d.3 }}
    4. {{ user_dict.hobby.2 }}
    5. {{ index }}
    6. {{ obj.score }}

    今日思维导图:

  • 相关阅读:
    online schema change and create index
    【软考】设计模式之适配器模式
    电脑被删除的文件怎么恢复?2023年数据恢复方法分享
    软件测试 | 当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?
    标准中文电码查询易语言代码
    HCIE-HCS规划设计搭建
    11.泛型
    JVM运行时数据区域详解
    带你一起玩转Redis 的 List 数据类型
    〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇
  • 原文地址:https://blog.csdn.net/qq_48064830/article/details/134399754