I am using ModelViewSet and TemplateHTMLRenderer to use the form and process 'post' method. When I tried render a field error, the error rendered [u'This field may not be blank.']. How can I make it render the simple message 'This...'?
in html,
<form action="." method="post" id="myform">
<input name="first_name" type="text">
<ul> {{ errors.first_name }}</ul>
</form>
in views.py,
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
renderer_classes = (renderers.JSONRenderer, renderers.TemplateHTMLRenderer)
template_name = 'account.html'
def list(self, request, *args, **kwargs):
response = super(AccountViewSet, self).list(request, *args, **kwargs)
if request.accepted_renderer.format == 'html':
return Response({'data': response.data}, template_name=self.template_name)
return response
def create(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
User.objects.create_user(**serializer.validated_data)
return Response(serializer.validated_data)
return Response({'errors': serializer.errors})
And I overrode rest framework's default required error message in serializer.py, but it seemed it ignored the customized required error message and showed the default required error message such as 'This field may not be blank..'.
in serializer.py,
class UserSerializer(serializers.ModelSerializer):
first_name = serializers.RegexField(regex=r'^[a-zA-Z -.\'\_]+$',
required=True,
error_messages={'required': _('Please enter your first name.'),
'invalid': _('Please enter a valid name.')})
What's wrong here?