面试题小知识点

1、filter和exclude的区别?

取到的值都是QuerySet对象,filter选择满足条件的,exclude:排除满足条件的.

2、F和Q的作用?

F:对数据本身的不同字段进行操作 如:比较和更新
Q:用于构造复杂的查询条件 如:& |操作

3、values和values_list的区别?

values : 取字典的queryset

values_list : 取元组的queryset

4、如何使用django orm批量创建数据?

bulk_create()
objs=[models.Book(title="图书{}".format(i+15)) for i in range(100)]
models.Book.objects.bulk_create(objs)

5、Django的Form和ModeForm的作用?

Form作用: 

   1.在前端生成HTML代码

   2.对数据作有效性校验

   3.返回校验信息并展示

ModeForm:根据模型类生成From组件,并且可以操作数据库

6、Django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。

#1.重写构造函数
def def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name")
#2.利用ModelChoiceField字段,参数为queryset对象

7、django的Model中的ForeignKey字段中的on_delete参数有什么作用?

删除关联表中的数据时,当前表与其关联的field的操作

django2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常

8、django如何实现websocket?

# 列举django orm中三种能写sql语句的方法。

扫描二维码关注公众号,回复: 4404523 查看本文章
1.使用execute执行自定义的SQL
2.使用extra方法 
3.使用raw方法
    1.执行原始sql并返回模型
    2.依赖model多用于查询

9、django orm 中如何设置读写分离?

#1.手动读写分离:通过.using(db_name)来指定要使用的数据库
#2.自动读写分离:
#    1.定义类:如Router
#    2.配置Router
        settings.py中指定DATABASE_ROUTERS
        DATABASE_ROUTERS = ['myrouter.Router',] 
#提高读的性能:多配置几个数据库,并在读取时,随机选取。写的时候写到主库
#实现app之间的数据库分离:分库分表

10、django-debug-toolbar的作用?

#1.是django的第三方工具包,给django扩展了调试功能
#包括查看sql语句,db查询次数,request,headers等

 11、解释orm中 db first 和 code first的含义?

#数据持久化的方式:
#db first基于已存在的数据库,生成模型
#code first基于已存在的模型,生成数据库库

12、django中如何根据数据库表生成model中的类?

#1.在settings中设置要连接的数据库
#2.生成model模型文件
    python manage.py inspectdb
#3.模型文件导入到models中
    python manage.py inspectdb > app/models.py

13、使用orm和原生sql的优缺点?

1.orm的开发速度快,操作简单。使开发更加对象化
   执行速度慢。处理多表联查等复杂操作时,ORM的语法会变得复杂
2.sql开发速度慢,执行速度快。性能强

14、django的contenttype组件的作用?

这个组件保存了项目中所有app和model的对应关系,每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。
当一张表和多个表FK关联,并且多个FK中只能选择其中一个或其中n个时,可以利用contenttypes

15、接口的幂等性是什么意思?

1.是系统的接口对外一种承诺(而不是实现)
2.承诺只要调用接口成功,外部多次调用对系统的影响都是一致的,不会对资源重复操作

16、什么是RPC?

远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务
   1.RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。
   2.首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。
   3.在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,
   4.最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

17、为什么要使用API

系统之间为了调用数据。
数据传输格式:
    1.json
    2.xml 

18、为什么要使用django rest framework框架?

能自动生成符合 RESTful 规范的 API
1.在开发REST API的视图中,虽然每个视图具体操作的数据不同,
但增、删、改、查的实现流程基本一样,这部分的代码可以简写
2.在序列化与反序列化时,虽然操作的数据不同,但是执行的过程却相似,这部分的代码也可以简写
REST framework可以帮助简化上述两部分的代码编写,大大提高REST API的开发速度

19、 简述 django rest framework框架的认证流程

1.用户请求走进来后,走APIView,初始化了默认的认证方法
2.走到APIView的dispatch方法,initial方法调用了request.user
3.如果我们配置了认证类,走我们自己认证类中的authentication方法

20、 django rest framework如何实现的用户访问频率控制

使用IP/用户账号作为键,每次的访问时间戳作为值,构造一个字典形式的数据,存起来,每次访问时对时间戳列表的元素进行判断,
把超时的删掉,再计算列表剩余的元素数就能做到频率限制了 
匿名用户:使用IP控制,但是无法完全控制,因为用户可以换代理IP登录用户:使用账号控制,但是如果有很多账号,也无法限制

21、rest_framework序列化组件的作用,以及一些外键关系的钩子方法

作用:帮助我们序列化数据
1.choices  get_字段名_display
2.ForeignKey source=orm 操作
3.ManyToManyFiled  SerializerMethodField()
                    def get_字段名():
                    return 自定义

22、给前段提供一个接口之前需要提供什么?

1.跟前端进行和交互,确定前端要什么
2.把需求写个文档保存

23、 PV和UV

1.pv:页面访问量,没打开一次页面PV计算+1,页面刷新也是
2.UV:独立访问数,一台电脑终端为一个访客

24、 如何实现用户的登陆认证

1.cookie session
2.token 登陆成功后生成加密字符串
3.JWT:json wed token缩写 它将用户信息加密到token中,服务器不保存任何用户信息
服务器通过使用保存的密钥来验证token的正确性

25、如何将dict转换成url的格式:

#使用urlencode
from urllib.parse import urlencode
post_data={"k1":"v1","k2":"v2"}
ret=urlencode(post_data)
print(ret,type(ret))  
k1=v1&k2=v2 <class 'str'>

26、django的模板中filter和simple_tag的区别?

自定义filter:{{ 参数1|filter函数名:参数2 }}
    1.可以与if标签来连用
    2.自定义时需要写两个形参
 simple_tag:{% simple_tag函数名 参数1 参数2 %}
    1.可以传多个参数,没有限制
    2.不能与if标签来连用

猜你喜欢

转载自blog.csdn.net/qq_42350970/article/details/84848672