面试笔记

认识 Django REST framework 框架

Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。

通常简称为DRF框架 或 REST framework。

特点:

提供了定义序列化器Serializer的方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化;

提供了丰富的类视图、Mixin扩展类,简化视图的编写;

丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;

多种身份认证和权限认证方式的支持;

内置了限流系统;

直观的 API web 界面;

可扩展性,插件丰富


面试笔记_第1张图片

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的错误,但是如果我们又要用到防止跨域请求,又不要报错我们只需要在表单标签中加入{% 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“)

你可能感兴趣的:(面试笔记)