Django相关面试题

  1. Django框架的生命请求周期

  2. 浏览器上输入地址,回车然后发生了什么? => Http请求生命周期 ?

  3. 什么是wsgi 以及作用?

  4. 中间件

  5. 中间件的执行流程?

  6. 中间件的执行流程?

  7. 说一下Django的路由系统

  8. MTV和MVC

  9. 视图
    • CBV和FBV的区别:

    • 处理csrf认证及CBV添加装饰器

    • 遇见的问题

  10. ORM操作

转载于:https://www.cnblogs.com/russellyoung/p/10128235.html

### Django 常见面试题及解答 #### 删除关联表中的数据时,当前表与其关联字段的操作 自 Django 2.0 版本起,在定义模型之间的关系时(如 ForeignKey 或 ManyToManyField),`on_delete` 参数成为必填项。此参数指定了当被引用的对象被删除时应采取的动作。如果不指定 `on_delete` 参数,则会在迁移数据库时报错[^1]。 ```python class MyModel(models.Model): related_field = models.ForeignKey(OtherModel, on_delete=models.CASCADE) ``` 上述代码片段展示了如何设置外键并规定删除行为为级联删除(即如果 OtherModel 的实例被删除,那么所有与此实例有关联的 MyModel 实例也会一同被删除)。其他可选值还包括 PROTECT、SET_NULL 等等。 #### 如何在 Django 中实现 WebSocket? 为了支持 WebSockets 功能,Django 需要借助第三方库如 Channels 来扩展其功能集。安装好 channels 后需配置项目以处理 WebSocket 连接和其他异步事件。具体来说就是更新项目的路由配置以及编写消费者类来响应来自客户端的消息。 ```python # settings.py INSTALLED_APPS = [ ... 'channels', ] ASGI_APPLICATION = 'myproject.asgi.application' # routing.py from django.urls import path from .consumers import ChatConsumer application = ProtocolTypeRouter({ "http": get_asgi_application(), "websocket": URLRouter([ path('ws/chat/<str:room_name>/', ChatConsumer), ]), }) ``` 以上示例说明了怎样通过 ASGI 协议和专门设计好的 Consumer 类型去监听特定路径下的 WebSocket 请求,并将其转发给合适的处理器。 #### Request 对象何时创建? 每当有一个 HTTP 请求到达服务器端口时,WSGIHandler 就会被调用来处理这个请求。在这个过程中,request 属性会被赋值成一个新的 HttpRequest 实例,该实例包含了本次请求的所有元数据信息,比如 GET/POST 数据、HTTP 头部等等[^2]。 ```python class WSGIHandler(base.BaseHandler): request = self.request_class(environ) # 创建HttpRequest对象 ``` 这段伪代码揭示了每次收到新请求时是如何构建对应的 request 对象的内部逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值