Подключитесь к Couchdb, используя Django rest framework 3.6.2 и python 3 - PullRequest
0 голосов
/ 08 мая 2018

Я работаю над фреймворком Django Rest. Я создал несколько API и храню данные в SQL Lite. Теперь я хочу сохранить данные в CouchDB из остальных вызовов API, в основном из приложения crud.

Я не понимаю, как подключиться к кушетке через Django rest framework. Я застрял здесь, не понимая, как сделать crud на диване, используя Django rest api.

Ниже приведен один из API, написанный на django для добавления accconts. Я хочу сохранить эти данные в 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)

Пожалуйста, помогите мне, я застрял.

Ответы [ 2 ]

0 голосов
/ 05 августа 2018

В книге Apress " Beginning CouchDB " Джо Леннона (публикация 2009 г.) есть пример приложения, в котором CouchDB используется в качестве бэкенда для приложения Django через couchdbkit.К сожалению, это локальная база данных в режиме «Admin Party», поэтому мне еще предстоит решить, как добавить необходимые параметры, чтобы подключить ее к Cloudant.Выполнение примеров Python из командной строки с Cloudant прекрасно работает для меня - есть учебники, объясняющие это, и это работает с couchdbkit.

В примере с Джо он оставляет минимальную запись SQLite по умолчанию в settings.py в качестве "фиктивного" заполнителя.

В библиотеке couchdbkit есть подсказки, которые заставляют меня думать, что мне нужно создать и передать строку URI (возможно, как значение в параметре COUCHDB_DATABASES в settings.py) с аналогичным содержимымв переменную среды IBM VCAP_SERVICES с учетными данными в виде пар ключ-значение.Я не нашел никаких примеров использования.

0 голосов
/ 25 мая 2018

Django в Python, и есть python-cloudant , который поддерживается в хорошем состоянии и может помочь вам использовать CouchDB с Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...