Python系列-Django-Ninja
适用对象:有一定python和django基础,对此技术感兴趣,或者想快速尝试、实现效果的。 原则:
- 不重复造轮子
- 实用为主,效果为主
- 官网是最好的教程,其它只是辅助
ninja介绍
Django Ninja 是一个使用 Django 和 Python 3.6+ 类型提示构建 API 的 Web 框架。 官网地址
- 做记录,加强记忆和总结经验
- 为什么做这个教程:新技术,目前国内外针对这个库所出的教程还比较少
ninja的基本使用
安装
pip install django pip install django-ninja
基本使用
实现最基本的hello world 参考教程,官网
- 创建一个目录(例如project)存放工程
- 创建django工程:
django-admin startproject myproject - 在myproject/urls.py的同级目录里创建api.py,按照官网教程分别在api.py和urls.py里写入代码
- 运行工程:
python manage.py runserver
或者参考视频教程
ninja的解析输入
参考教程,官网 或者参考视频教程
- 来自查询字符串的输入
例如:http://127.0.0.1:8000/api/hello?name=Ninja,get请求用“?”号和指定参数拼接的方式 - 默认值
当没有输入指定参数时的返回值 - 输入类型
对参数输入做类型校验,不符合校验则作拦截 - 从路径输入
自定义路径输入 - 来自请求正文的输入
post请求 - 自记录 API文档
超级实用的自带功能,可以根据写好的api接口自动生成文档,可以查看、测试。 http get post方法介绍 为什么示例中post方法会报405:不允许静态文件响应POST请求
ninja的处理响应
参考教程,官网 或者参考视频教程 同步数据库:python manage.py migrate 创建一个用户:python manager.py createsuperuser
- 定义响应模式
@api.get("/me", response=UserSchema) - 多种响应类型
``@api.get(“/me”, response={200: UserSchema, 403: Error})
ninja的增删改查
CRUD——创建 、检索、更新、删除是持久化存储的四个基本功能。 参考教程,官网 或者参考视频教程
- 创建一个新的app:
python .\manage.py startapp employee - 注册:在
xxmyproject\settings.py 中添加: - 在employee目录下新建api.py
- 添加路由
- 同步数据库
python manage.py makemigrations - 创建数据库
python manage.py migrate - vscode查看sqlite数据库的插件
SQLite
异常情况
- 如果有外键,一定要添加
on_delete=models.CASCADE ,否则会报错 models.ForeignKey(Department, on_delete=models.CASCADE) - 报错
django.db.utils.IntegrityError: FOREIGN KEY constraint failed 解决办法: 其他推荐答案 尝试将False的db_constraint的名称参数设置为False(默认情况下,其True)如下: status = models.ForeignKey(Status, on_delete=models.PROTECT,db_constraint=False)
|