当前位置: 首页 > news >正文

django框架 [面试篇]

Django 是一个基于 Python 的web框架,遵循"快速开发,不重复造轮子(don't repeat yourself)"的原则,帮助用户构建web应用。

而 Django 它本身提供了一些全栈式的一些组件,包括了 ORM,模板引擎,表单处理,身份校验和后台管理。

首先 ORM 是 Django 提供的,可以使用 Model 类来快速生成数据表,Model 类对应数据表,类属性对应表字段,类实例对应表数据;操作数据库使用Orm的方法,不需要手写 SQL;如果模型类更改,使用 makemigrations 和 migrate 就可以同步到数据库,

然后就是表单模板引擎, Django 提供了模板的方式,可以快速生成 HTML 页面,另外也支持模板复用模板继承。模版表单,可以提交处理后,可以将页面的数据提供到视图进行逻辑处理

  • 常用于前后端不分离的情况(mvt模式)model类, temaplte模版,视图View。这就是常说的 MTV 模式。
  • 如果是 VUE 加Django 前后端分离的情况,模板可能用的比较少

Django 本身提供了一套用户系统,它默认是进行 session型认证,但也可以用到第三方库 DRF 来进行 token 校验,

同时带了一个后台管理系统,可以对模型的数据进行增删改查,另外也可以对admin页面进行定制化的开发,像我之前的在一次开发中,我写了一个博客风格的一个页面展示了博客标题列表,然后在下方有一个支持 MD 输入的编辑器,提交之后形成新的一篇文章,我们点击文章的标题也可以查看文章的内容。

另外 Django 它有很多生态,

  • 比较关键的是第三方库 Django rest framework 可以快速生成 restful 风格的 API。支持序列化,认证,视图集
  • 另外它有很多呃提供了很多命令行工具,比如说 start project 和 start app,可以帮助我们快速的开发写生成呃框架代码和应用代码,还有 create superuser 快速的创建用户等等

Django相比flask,是开箱即得的,flask更加的简洁。

-----------------------------

DRF 是一个高效、标准的 Django API 开发框架,通过序列化器视图集路由的封装,能快速构建 RESTful风格 API,

同时通过权限(设置permission)、认证(authetication如设置jwttoken)等机制保障安全性。

我在项目中,我的做法是项目目录下,放了一个utils包,这里面放通用的一些方法。

myproject/                ← 项目根目录
├── manage.py             ← 
├── myproject/            ← 
│   ├── __init__.py       ← 
│   ├── settings.py       ← 
│   ├── urls.py           ← 
├── app1/                 ← 
├── app2/                 ← 
├── utils/                ← 
│   ├── models.py         ← 模型基类
│   ├── settings.py       ← 
│   ├── urls.py           ← 
  1. 有一个,models.py 中放模型基类,有创建人字段,修改人,创建时间,修改时间等字段。其他模型继承这个模型基类。
    1.  我创建了一个system应用,里面放用户信息,同时重新写了django用户表,并继承模型基类,添加了一些额外的字段,比如姓名、电话、头像等字段。
  2. 有一个viewset.py,里面自定义了一个【模型视图集基类】, 它继承的ModelViewSet类,
    1. 统一了(增删改查)接口的响应结构格式
    2. 增加了一个批量删除的接口
    3. 这里统一配置支持了(后端字段过滤、关键字搜索与排序)
    4. 应用中的view.py文件中,就继承模型视图基类,基本只需配置关键词搜索支持的字段,配置字段过滤支持的字段等。
    5. 实现权限控制,添加permission_classes为IsAuthenticated,他们在请求时就会校验是否登录了
  3. 有一个pagination.py分页器, 这里定义,分页请求的参数、和响应结构,在viewset.py中的list列表接口有被用到
  4. 一个exception.py异常处理函数,这里统一异常拦截处理。也就是接口的一些异常情况,也要进行统一结构的响应。

另外,我习惯使用jwt认证。

使用的是第三库,djangorestframework-simplejwt 。 setting中对simpleJWT进行配置,这样登录后就会返回token。需要登录接口就需要在请求头传递Authorization.

相关文章:

  • python-leetcode-最大连续1的个数 III
  • 【leetcode hot 100 146】LRU缓存
  • 如何修复 Tauri 发布后程序运行时显示 `asset not found: index.html` 的问题
  • 父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法
  • NFS writeback流程中的GFP_NOFS
  • Docker安装部署RabbitMQ
  • 条款1:理解模版性别推导
  • C#带多组标签的Snowflake SQL查询批量数据导出程序
  • linux 命令 grep
  • Embedding模型到底是什么?
  • C++11 编译使用 aws-cpp-sdk
  • 专题地图的立体表达-基于QGIS和PPT的“千层饼”视图制作实践
  • 后端主流数据库分析
  • 前端面试:React生态有哪些?
  • 【从零开始学习计算机科学】数据库系统(八)数据库的备份和恢复
  • 神经网络常用库-torch(基础操作张量)
  • 奇墨科技FinOps云成本优化:精细化IT成本分摊重塑企业云财务管理
  • JavaScript class
  • Axure设计之下拉多选框制作教程C(中继器)
  • 网络安全防护架构有哪些 网络安全防护措施包括
  • 传媒公司主要做什么/优化网络培训
  • 权威的顺德网站建设/百度快速排名工具
  • 永久免费网站/企业营销策略有哪些
  • 北京网站建设哪个好/2024年瘟疫大爆发
  • 网站设计师工作室/怎么联系百度客服
  • 上海虹口网站制作/买卖友情链接