认识 Django REST framework 框架
Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。
通常简称为DRF框架 或 REST framework。
特点:
提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;
提供了丰富的类视图、Mixin扩展类,简化视图的编写;
丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
多种身份认证和权限认证方式的支持;
内置了限流系统;
直观的 API web 界面;
可扩展性,插件丰富
Django**的中间件**
Django的中间件就是一个类,分别是process_request,process_respone,process_view,process_exception,process_render_template。
以上方法的返回值可以是None或一个Httpresponse 对象,如果是None,则继续按照django定义的规则向后继续执行,如果是Httpresponse对象,则直接将该对象返回给用户。
Process_request有一个参数,就是request,这个request和视图函数中的request是一样的,他的返回值可以是None也可以是httpresponse对象,返回值是none的话,按照正常流程继续走,交给下一个中间件处理,如果是httpresponse对象,django将不执行视图函数,而将相应对象返回给浏览器。(总结**“中间件的process_request方法是在执行视图函数之前执行的、2.当配置多个中间件时,会按照Middleware中的注册顺序,也就是列表的索引值,从前到后依次执行。3.不同中间件之间传递的request都是同一个对象”**
Process_response
他有两个参数,一个是request,一个是response,request就是上述例子中的一样的对象,reponse是视图函数返回的httpresponse对象。该方法的返回值也必须是Httpresponse对象。
Process_view
Process_view(self.view_func.view_args,view_kwargs)
该方法有四个参数:
Request是httprequest对象。
View_func是django即将使用的视图函数(它是实际的函数对象,而不是函数的名称最为字符串)
View_args是将传递给视图的位置参数的列表
View_kwargs是将传递给视图的关键字参数的字典。View_args和view_kwargs都不包含第一个参数视图(request)
Django会在调用视图函数之前调用process_view方法。
Process_exception
该方法两个参数:一个Httprequest**对象,一个exception是视图函数异常产生的Exception对象**
该方法只有在视图函数出现异常才执行,他返回的值可以是一个none**也可以是一个httpresponse对象,如果是httpresponse对象,Django将调用模板和中间件中的process_response方法,并返回给浏览器,否则将默认处理异常,如果返回一个None,则交给下一个中间件的process_exception方法来处理异常,她得执行顺序也是按照中间件注册顺序的倒叙值行的。**
Middleware 配置项是一个列表,列表是一个个字符串,这些字符串儿其实就是一个个类,也就是一个个中间件
中间件的应用场景
做ip**限制**
放在中间件类的列表中华,阻止了某些ip的访问
2**,URL访问过滤**
如果用户访问的是login视图
如果访问其他视图(需要检测是不是有session已经有了放行,没有返回login),这样就省在多个视图函数上写装饰器
3**、缓存**
客户端请求来了,中间件去缓存看看有没有数据,有直接返回给用户,没有再去逻辑层执行视图函数
注意:项目目录下MIDDLEWARE中'django.middleware.csrf.CsrfViewMiddleware',为用户实现防止跨站请求伪造的功能,在之前我们都是将它注释掉的,因为我们如果不注释掉在表单提交的时候就会报forbidden的错误,但是如果我们又要用到防止跨域请求,又不要报错我们只需要在表单<from>标签中加入{% csrf_token %}即可解决这个问题。
流程控制语句+
有 if、for、while、break、continue
If
Num=int(input(“please input a number……”) # 提醒用户输入
If num == 1: #注意:最后elif
Print(”your num is”,1)
Elif num == 2: #注意:elif
Print(your num is”,2)
Elif:
Print(“hello python“)