django - Django创建模型实例 - 创建前验证?在经理班?经理班有什么用?
问题描述
假设我有一个“书”类,我想在创建模型之前点击一个 API 来验证这本书是否存在。
我是否创建我的“BookManager”类,覆盖创建,点击 api,如果无效则抛出异常,或者如果有效则创建?
然后在书中我会写 objects = BookManager()
并创建一本书。
new_book = Book.objects.create(name)?
基本上,这感觉像是一种组织代码的好方法,但我不确定这是否适用于 Manager 类,而不是仅修改查询集。
此外,是否有人对如何构建 django rest 框架应用程序有很好的参考?文件夹结构等
解决方案
我将从非常基础的开始。我假设您的 api 调用现在是简单的获取请求,您可以使用 python http 包来实现。
(我现在假设 api 是第三方 api)
您可以定义一个简单的视图,假设视图名称为:bookM 接下来您已经定义了模型,例如主键、book_name、other_attrs、日期
现在,当您在此视图中点击 api 时,您可以从 get 请求中获得响应
requests.get(url = URL, params = PARAMS)
有了这个,如果您发现返回带有一些文本或 null 的响应,您可以对模型执行如下操作:
book= BookSave(
name = "book1",
)
book.save()
如果不是这种情况,您可以在 python 变量中保存错误消息并在呈现 html 时显示
您可以将此视图用作 api 并从网页进行 ajax 调用,在这种情况下您也可以只返回消息
推荐阅读
- android - 在视图顶部打开 PopupWindow
- javascript - 即使在最小化浏览器后如何保留html元素的位置?
- configuration - @nuxtjs/pwa 不会生成带有本地系统主机信息的 sw.js
- ethereum - 无法进行代币转移
- python - 根据平均值向数据框添加新列
- php - 在 PHP 中使用基本身份验证的 SOAP XML 请求
- node.js - 建议在 Google 上的操作中不起作用
- wpf - 运行时生成的图像 ( .gif ) 不会显示在 WPF UI 的 Image 元素中
- java - 如何使用 Math.random 生成 0-z 之间的随机值?
- maven - 即使junit5测试失败,Maven也会返回exit 0