python - 将 Django 与 API 之类的调用一起使用时,Django REST 框架的好处?
问题描述
阅读这个问题看起来我可以在现有的 django 项目中设置 DRF。
这让我开始思考......我有一个使用 ajax 调用的 django 应用程序,它返回非常简单的视图部分,这些视图部分快速显示在页面上,然后几秒钟后另一个 ajax 调用返回另一个视图。(你可以把它想象成 Whac-a-mole 游戏,但每个 mole 都是从服务器返回的不同视图部分。)
所以基本上我每分钟有 30-50 个电话mysite.com/ajax_new_mole
,其观点类似于(只是在飞行中编造这个,忽略任何错误)
...
def ajax_new_mole(request):
random_id = get_random_mole_id()
random_mole = Mole.objects.get(id = random_id)
return render(request, 'partials/_mole_photo.html, {'mole':random_mole})
...
和_mole_photo.html
模板
{% load load_cloudfront %}
<div class="img-wrapper" id="{{ photo.id }}">
<span class="album-title" id="album-title">Title: {{ mole.name }}</span>
<img src='{% load_cloudfront_medium mole.name %}' id="image{{ photo.id }}"/>
</div>
现在我的问题。在这个情况下。Django REST Framework 会在减少响应和呈现此内容 的开销方面提供任何性能优势吗?
解决方案
DRF 的瓶颈在于序列化器。所以最难的部分是序列化模型和反序列化请求。这就是为什么如果你只将它用于这种类型的小片段,那么我不建议使用 DRF。最好仅在拥有超过 10 个 API 视图时才使用它。
推荐阅读
- docker - 如果在 Docker 容器中运行,Nodemailer 无法向 STMP 服务器发送电子邮件
- javascript - 解决猫鼬虚拟财产中的承诺?
- spring-boot - 使用 Spring Cloud Stream Kafka binder 重复消费消息
- xamarin - KeyboardOverlapp 插件在我的 iOS 应用上不起作用
- vue.js - 如何在 vuetify 中使用材质图标
- javascript - 如何让 Angular 拦截器知道某个请求的响应类型是文本而不是 json?
- c++ - 我在哪里可以找到 c++ 中的 qml 类型?
- swift - NSOperation 尚未解除分配
- java - 如何使用我的 persistence.xml 和 datasource-jdbc.xml 进行 jdbc 身份验证?
- django - Django inlineformset:子表单中缺少 PK -> form_set.is_valid() = False