Django извлекает строку из [ErrorDetail (string = 'Test Message', code = 'invalid')] - PullRequest
0 голосов
/ 29 августа 2018

Я хотел бы показать в своем шаблоне только сообщение, которое находится в строковой переменной, но я не знаю как. Я использую Django Rest Framework. Мой код:

form.html

<p>{{ serializer.amount.errors }}</p>

serializers.py

from rest_framework import serializers
from .models import Data, Material


class DataSerializer(serializers.ModelSerializer):

class Meta:
    model = Data
    fields = ('order_date', 'material', 'amount', 'delivery_number', 'employee')
    read_only_fields = ('id', 'insert_time')
    extra_kwargs = {"amount": {"error_messages": {"invalid": "Test Message"}}}

views.py

class Form(APIView):

renderer_classes = [TemplateHTMLRenderer]
template_name = 'zulieferung/form.html'

def get(self, request):
    materials = Material.objects.distinct('material_unit_id')
    return Response({'all_materials': materials})

def post(self, request):
    materials = Material.objects.all()
    serializer = DataSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response({'all_materials': materials}, status=status.HTTP_201_CREATED)
    return Response({'serializer': serializer}, status=status.HTTP_400_BAD_REQUEST)

И вместо Тестовое сообщение в моем шаблоне у меня есть [ErrorDetail (string = 'Test Message', code = 'invalid')]

enter image description here

1 Ответ

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

Вы должны попробовать в своем шаблоне

{% for error in serializer.amount.errors %}
    {{ error }}
{% endofor %}

Но я не понимаю, почему вы используете django rest_framework с шаблонами HTML. Rest Framework используется для REST API, что определенно не в этом случае. Для этого используйте скорее django.forms. На самом деле не имеет смысла использовать REST-сериализатор, напрямую отображаемый в шаблоне HTML.

Ссылки:

Работа с формами

Когда использовать REST framework

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