【问题标题】:Using Sql and MongoDb with Django rest framework for apis将 Sql 和 MongoDb 与 Django REST 框架一起用于 api
【发布时间】:2018-02-11 11:08:26
【问题描述】:

我是 django 的新手,它默认使用 sql db,但也将它连接到 mongoldb。在我的models.py中

from mongoengine import Document, EmbeddedDocument, fields

class ToolInput(EmbeddedDocument):
    name = fields.StringField(required=True)
    value = fields.DynamicField(required=True)

class Tool(Document):
    label = fields.StringField(required=True)
    description = fields.StringField(required=True, null=True)
    inputs = fields.ListField(fields.EmbeddedDocumentField(ToolInput))

在我的 serializers.py 中有:-

from .models import Tool
from rest_framework_mongoengine import serializers as mongoSerializers
from .models import Tool

class ToolSerializer(mongoSerializers.DocumentSerializer):
    class Meta:
    model = Tool
    fields = '__all__'

在我的 api.py 我有:-

from .serializers import ListSerializer, CardSerializer, ToolSerializer
from rest_framework.generics import ListAPIView
from rest_framework_mongoengine import viewsets as mongoViewsets
from .models import List, Card, Tool

class ToolApi(mongoViewsets.ModelViewSet):
    #lookup_field = 'id'
    queryset = Tool.objects.all()
    serializer_class = ToolSerializer

在我的 urls.py 中有:-

from django.conf.urls import include, url
from .api importToolApi

urlpatterns = [
    url(r'Tool', ToolApi.as_view({'get': 'Tool'})),
]

当我点击这个 api 时,错误提示:- 'ToolApi' 对象没有属性 'Tool'

之前我使用来自 rest_framework.generics 的 ListAPIView 类来创建 api 来访问来自 sql 的数据。错误是因为我使用了 ModelViewSet for ToolApi?

PS - 请参考一些同时使用 mongodb 和 sql 的 git 项目

【问题讨论】:

    标签: python django django-rest-framework django-mongodb-engine restframeworkmongoengine


    【解决方案1】:

    抱歉,Shubham 回复晚了。

    我认为,问题在于您不应该在以下位置使用{'get': 'Tool'}

    urlpatterns = [
        url(r'Tool', ToolApi.as_view({'get': 'Tool'})),
    ]
    

    你应该使用类似的东西:

    urlpatterns = [
        url(r'Tool', ToolApi.as_view({'get': 'list'})),
    ]
    

    urlpatterns = [
        url(r'Tool', ToolApi.as_view({'get': 'retrieve'})),
    ]
    

    至于示例 repo,恐怕我不能提供比 https://github.com/BurkovBA/django-rest-framework-mongoengine-example/stargazers 更好的东西了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 2019-11-25
      • 1970-01-01
      • 2018-08-20
      • 2016-11-08
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多