【发布时间】:2015-08-17 07:17:49
【问题描述】:
我正在使用 ModelViewSet 和 TemplateHTMLRenderer 来使用表单和处理“发布”方法。当我尝试呈现字段错误时,呈现的错误 [u'This field may not be blank.']。我怎样才能让它呈现简单的消息'This...'?
在 HTML 中,
<form action="." method="post" id="myform">
<input name="first_name" type="text">
<ul> {{ errors.first_name }}</ul>
</form>
在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})
我在 serializer.py 中覆盖了 rest 框架的默认必需错误消息,但它似乎忽略了自定义的必需错误消息并显示了默认的必需错误消息,例如“此字段可能不是空白..”。
在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.')})
这里有什么问题?
【问题讨论】:
标签: django validation field django-rest-framework