RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[django-rest-framework]

Martin Hope
Unknown
Asked: 2023-11-06 21:13:11 +0000 UTC

如何向请求添加多个 Base64 编码图像

  • 5

我想发出 POST 请求来创建机器人并传递多个经过 Base64 编码的 photo_examples 图像。默认情况下,使用Base64图像字段时,只能添加一张图像,但我需要添加几张。我尝试查看网上的其他项目,但没有找到解决方案,请问如何实现?

模型.py

class Bot(models.Model):
    """Bot Model."""
    name = models.CharField(
        'Название',
        max_length=100
    )
    author = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        verbose_name='Автор',
    )
    description = models.TextField(
        'Описание'
    )
    categories = models.ManyToManyField(
        Category,
        through='CategoryBot',
        related_name='bots',
        verbose_name='Категории',
    )
    main_photo = models.ImageField(
        'Фото',
        upload_to='uploads/main/%Y/%m/%d/',
    )
    price = models.DecimalField(
        'Цена',
        max_digits=8,
        decimal_places=0
    )
    is_special_offer = models.BooleanField(
        'Спецпредложение',
        default=False
    )

    class Meta:
        ordering = ('name',)
        verbose_name = 'Бот'
        verbose_name_plural = 'Боты'

    def __str__(self):
        return self.name


class Photo(models.Model):
    """Model of photos of examples of the bot's work."""
    photo_examples = models.ImageField(
        'Фото(образцы)',
        upload_to='uploads/examples/%Y/%m/%d/',
    )
    bot = models.ForeignKey(
        Bot,
        on_delete=models.CASCADE,
        verbose_name='Бот',
        related_name='photo_examples'
    )

    class Meta:
        ordering = ('bot',)
        verbose_name = 'Фото(образцы)'
        verbose_name_plural = 'Фото(образцы)'

    def __str__(self):
        return f' Фото бота {self.bot}'

序列化器.py

class PhotoSerializer(serializers.ModelSerializer):
    """Serializer of photo bot examples"""
    photo_examples = Base64ImageField()

    class Meta:
        model = Photo
        fields = '__all__'


class CategoryNameSerializer(serializers.PrimaryKeyRelatedField):
    def to_representation(self, value):
        return value.name


class AbstractBotSerializer(serializers.ModelSerializer):
    """
    An abstract class that defines serialization and
deserialization behavior for bot-related data.
    """
    photo_examples = PhotoSerializer(many=True)
    author = serializers.StringRelatedField(read_only=True)
    discount_author = serializers.SerializerMethodField()
    discount_category = serializers.SerializerMethodField()
    amount_discounts_sum = serializers.SerializerMethodField()
    final_price = serializers.SerializerMethodField()
    categories = CategoryNameSerializer(
        required=False,
        queryset=Category.objects.all(),
        many=True,
    )

    class Meta:
        abstract = True
        fields = '__all__'

视图.py

class BotViewSet(ModelViewSet):
    """The viewset for the bot.
    With the possibility of pagination, search by name
    and description, filtering by category"""
    queryset = Bot.objects.all()
    serializer_class = BotSerializer
    pagination_class = LimitPageNumberPagination
    filter_backends = (filters.SearchFilter, DjangoFilterBackend, )
    search_fields = ('name', 'description')
    permission_classes = (IsAuthorOrReadOnly, IsAuthor,)
    filterset_fields = ('categories', )

    def get_serializer_class(self):
        if self.action == 'retrieve':
            return BotReviewRatingSerializer
        return self.serializer_class

    def perform_create(self, serializer):
        discount_author = self.request.data.get("discount_author", 0)

        bot_instance = serializer.save(author=self.request.user)

        bot_discount, created = BotDiscount.objects.get_or_create(
            bot=bot_instance, defaults={"discount": discount_author}
        )

        if not created:
            bot_discount.discount = discount_author
            bot_discount.save()

我想以这种格式传递数据,但是如果有一种方法可以更轻松地实现添加多个图像,那么可以使用另一种传递多个图像的方法。

发布请求

{
    "name": "My Bot New",
    "description": "This is my bot",
    "main_photo": "data:image/jpeg;base64,/9j/4A....A/9k=",
    "price": 500,
    "discount_author": 35,
    "categories": [6, 4],
    "photo_examples": [
        {
        "photo_examples": "data:image/jpeg;base64,/9j/4A....A/9k="
        },
        {
        "photo_examples": "data:image/jpeg;base64,/9j/4A....A/9k="
        }
    ]
}

现在我收到此错误消息:

{
    "photo_examples": [
        {
            "bot": [
                "Required field"
            ]
        },
        {
            "bot": [
                "Required field."
            ]
        }
    ]
}
django-rest-framework
  • 1 个回答
  • 25 Views
Martin Hope
Vladimir Babaev
Asked: 2022-07-05 17:10:10 +0000 UTC

在 redoc 和 swagger 中更改 API 的标头

  • -1

我在 redoc 和 swagger 中设置了显示,我更改了 operation_id,它们发生了变化,正如您在屏幕截图中看到的,我需要将名称“events”更改为“Events”。我使用 drf-yasg 库

在此处输入图像描述

django django-rest-framework
  • 1 个回答
  • 55 Views
Martin Hope
ZLUKADARK
Asked: 2022-03-30 22:42:28 +0000 UTC

如何使内容仅对创建它的用户可见?

  • 0
VIEWS.PY

from rest_framework.decorators import api_view
from rest_framework import status, permissions, generics
from rest_framework.permissions import IsAuthenticated
from django.contrib.auth import authenticate, login
from rest_framework.response import Response
from .serializers import TaskSerializer, ListSerializer
from .models import Task

class ViewListPermission(generics.ListAPIView):
    queryset = Task.objects.all()
    serializer_class = ListSerializer
    permission_classes = [permissions.IsAuthenticated] 

class taskList(ViewListPermission):
    @api_view(['GET'])
    def taskList(request):
        tasks = Task.objects.all()
        serializer = ListSerializer(tasks, many = True)
        return  Response(serializer.data)

SERIALAIZER.PY

from rest_framework import serializers
from .models import Task

class ListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Task
        fields = ('title','deadline','completed','importance','id')
django-rest-framework
  • 1 个回答
  • 10 Views
Martin Hope
Crazy Theory
Asked: 2022-01-05 17:12:50 +0000 UTC

实施电子邮件验证和密码恢复的愿景存在问题

  • 1

我正在 DRF 中编写一个 API,以便随后访问它并编写客户端。为了正确选择将附加 uidb 和令牌的地址,出现问题。如果这个地址在 DRF 项目的框架内,那么用户将直接访问 API,信息将以 REST 格式呈现给他。

为了更清楚我的意思,让我们以注册端点为例:Android或iOS客户端上的用户,但这并不重要,即使是网络,将他的数据输入到表单中,然后将它们发送到API 及其验证已经在那里进行,如果一切顺利,用户将被保存为非活动状态,并向他们的电子邮件地址发送一条消息。链接应该是什么?她应该去哪里?我相信在用户打开给他的链接后,他应该会看到一个漂亮的题词“感谢您确认注册”或类似的东西。

在此处输入图像描述

django-rest-framework
  • 1 个回答
  • 10 Views
Martin Hope
virvaldium
Asked: 2020-09-20 20:03:33 +0000 UTC

访问令牌生成

  • 1

您能告诉我如何为之前创建的应用程序生成访问令牌吗?我正在使用 oauth2 身份验证。有时我需要手动生成令牌。管理面板中的应用程序是使用以下参数创建的:

Client type:  Confidential
Authorization grant type:  Resource owner password-based

如何创建知道此应用程序 ID 的访问令牌?

django-rest-framework
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5