django rest_framework. десериализовать байты, представленные в виде строки из ответа json - PullRequest
0 голосов
/ 17 марта 2020

На самом деле, я не уверен, как rest_framework сериализует мои байты данных, это предположение. Я пытался найти, как это работает, но ничего не произошло. Я думаю, что для моего процесса десериализации это не важно, потому что он уже представлен как-то байтами, и мне нужно найти способ, как его десериализовать.

Я использую:

python 3.8.0

Django 3.0.3
djangorestframework 3.11.0

Мой код:

root файл urls

from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
from rest_framework import routers
import rest_framework

from AccontsCenter.views import AccountViewSet



from rest_framework.serializers import HyperlinkedModelSerializer
from django.contrib.auth.models import User, Group

class UserSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ["url", "username", "email"]

from rest_framework.viewsets import  ViewSet, ModelViewSet


class UserViewSet(ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer


router = routers.DefaultRouter()

router.register(r"users", UserViewSet)
router.register(r"accounts", AccountViewSet)


urlpatterns = [
                url(r'^', include(router.urls)),
                url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
                path('admin/', admin.site.urls),
                # path('accounts/', include('AccontsCenter.urls')),
                # path('proxies/', include('Proxies.urls')),
                # url(r'^', include(router.urls)),
                # url(r'^api-auth/', include("rest_framework.urls", namespace="rest_framework"))
              ]

Модель аккаунта is:

import typing
import inspect
import os, sys
import json

from django.db import models

from Accounts import FloodAccount
from modules_simpified import loadFromModules


# modules_obj_list = loadFromModules()

class Account(models.Model):
    # on_add_acc_events: typing.List[typing.Callable] = [(name, obj) for name, obj in vars(modules_obj_list).items() if inspect.isfunction(obj)]
    on_add_acc_events = []

    username = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    password = models.CharField(max_length=200)
    mail_agent = models.CharField(max_length=200)
    cookies = models.BinaryField(null=True, blank=True, editable=True)
    last_cookie_update = models.DateTimeField(null=True, blank=True)
    is_banned = models.BooleanField(default=False)
    processed = models.BooleanField(default=False)
    in_processing = models.BooleanField(default=False)

Класс сериализации учетной записи:

from rest_framework.serializers import HyperlinkedModelSerializer
from rest_framework import permissions
from .models import Account

class AccountSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = Account
        fields = ["username", "email", "password", "mail_agent", "cookies", "last_cookie_update", "is_banned", "processed", "in_processing"]

viewset account:

from rest_framework.viewsets import ViewSet, ModelViewSet
from rest_framework import permissions
from .models import Account
from .serializers import AccountSerializer

class AccountViewSet(ModelViewSet):
    queryset = Account.objects.all()
    serializer_class = AccountSerializer
    permissions = [permissions.IsAuthenticated]

что я делаю, чтобы получить учетные записи из AccountViewSet:

import requests
import json
results = json.loads(requests.get("http://127.0.0.1:8000/accounts").text)["result"]
# cookie that i need to deserialize
cookie = results[0]["cookie"]
...