簡體   English   中英

使用Django Rest Framework 3.6.2和python 3連接到Couchdb

[英]Connect to Couchdb using Django rest framework 3.6.2 and python 3

我正在研究Django Rest框架。 我創建了一些API,並將數據存儲在sql lite中。 現在,我想將其余API調用(基本上是原始應用程序)的數據保存到CouchDB中。

我沒有得到如何通過Django rest框架連接到沙發數據庫。 我被困在這里,沒有得到如何使用Django rest api在沙發上做雜物。

以下是用django編寫的用於添加accconts的api之一。 我想將此數據保存在CouchDB中。

models.py

class BankAccount(models.Model):
    SAVINGS = 'saving'
    CURRENT = 'current'
    TYPE = (
      (SAVINGS,'Saving'),
      (CURRENT,'Current')
    )

    type = models.CharField(max_length=20, choices=TYPE, default=SAVINGS)
    bank_name = models.CharField(max_length=200)
    account_number =  models.IntegerField()
    balance = models.DecimalField(max_digits=10, decimal_places=2)

    def __str__(self):
        """returns the model as string."""

        return self.bank_name

    def __str__(self):
        """returns the model as string."""

        return self.type

serializers.py
class BankAccountSerializer(serializers.ModelSerializer):

    class Meta:
        model = BankAccount
        fields = '__all__'

views.py 

class BankAccountView(APIView):

    def get_object(self, pk):
        try:
            return BankAccount.objects.get(pk=pk)
        except BankAccount.DoesNotExist:
            raise Http404

    def get(self, request, format=None):
        accounts = BankAccount.objects.all()
        serializer = BankAccountSerializer(accounts, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        serializer = BankAccountSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def put(self, request, format=None):            
        data = json.loads(request.body)
        pk = data['id']
        action = data['action']
        if action == 'delete':
            return self.deleteItem(pk)
        account = self.get_object(pk)
        serializer = BankAccountSerializer(account, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def deleteItem(self, pk):        
        account = self.get_object(pk)
        account.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

請幫我,我卡住了。

Django使用的是Python,並且其中的python-cloudant維護良好,可以幫助您將CouchDB與Python結合使用。

Joe Lennon(出版於2009年)的Apress書“ Beginning CouchDB ”中有一個示例應用程序,該應用程序通過CouchDBKit將CouchDB用作Django應用程序的后端。 遺憾的是,它是處於“管理方”模式下的本地數據庫,因此我尚未弄清楚如何添加所需的參數以將其連接到Cloudant。 使用Cloudant進行命令行python示例對我來說效果很好-有一些教程對此進行了解釋,並且可以與couchdbkit一起使用。

在Joe的示例中,他將最小的默認SQLite條目留在settings.py中作為“虛擬”占位符。

benchdbkit庫中有一些線索,使我認為我需要構造並傳遞一個URI字符串(可能是settings.py中COUCHDB_DATABASES參數中的一個值),其內容類似於IBM的VCAP_SERVICES環境變量,其憑證為鍵值對。 我還沒有找到任何用法示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM