首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用django rest框架代替django orm的最佳方法

使用django rest框架代替django orm的最佳方法
EN

Stack Overflow用户
提问于 2015-08-19 05:06:22
回答 2查看 1.7K关注 0票数 4

我在我的webapp中使用了django-rest-framework for api。用django rest框架代替default ORM provided by django好吗?我已经提到了这个post,但仍然很困惑。因为drf要求创建类,我认为最好使用这些代码来处理对象,因为我可以重用代码。

urls.py

代码语言:javascript
复制
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)

views.py

代码语言:javascript
复制
class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

serializers.py

代码语言:javascript
复制
class UserSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')

如何使用django rest框架在crud中以views.py的方式处理对象?

EN

回答 2

Stack Overflow用户

发布于 2015-08-19 06:41:19

这里有两个层:ModelModel SerializerModel是底层。

  • 当您需要与Django应用程序中的数据库交互时,您应该使用Model
  • 当您需要从客户端与数据库交互时,您可以.
代码语言:javascript
复制
- **A:** create a `view` which, works in the traditional way of rendering the content on the server side and then send back a `POST` request from the client to the view, if you want to edit (i.e. `django-forms`) , or...  
- **B:** Setup a `REST API` that lets you fetch and update your database content via `AJAX` request. This is the purpose of an `API`.

  • 如果无论您处理的是Model还是Model Serializer,都必须运行任何逻辑,那么它应该在底层(即Model )上实现。

尽管我们没有构建外部应用程序,但我们现在经常使用API是因为它允许更多的交互性和更快的用户界面。当今最流行的前端框架(例如angularjs)都是围绕着使用API的概念构建的。

票数 3
EN

Stack Overflow用户

发布于 2015-08-19 08:40:59

我想在Arnar的出色答案中添加一个可能的场景。

  • C:您可以从视图代码中使用DRF的视图集。 review_metas_response = ReviewMetaViewSet.as_view({ 'get':'user_visit_list‘})(请求,format="json",limit=REVIEW_META_NUM)
  • D:您可以从视图代码中使用DRF的序列化程序。 review_meta = ReviewMeta.objects.get(id=review_meta_id)序列化程序= ReviewMetaSerializer(review_meta,context=context)

我倾向于使model变粗(许多方法),使DRF serializer & viewset变粗,使视图变细。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32086928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档