0
私はDjango 2.7を使用して、Rest APIアプリケーションを構築し、クライアントからの要求データの検証/クリーンアップに問題があり、詳細トランザクション(Not Save/Update)を取得します。たとえば、要求データtrx_noは、5文字以上の長さでなければなりません。私は作成しなければならない検証クラスはどこですか? Model.pyで検証するか、フォームを使用するかシリアライザで行うべきですか?Django 2.7 Rest API Validation Request
class mst_trx(models.Model):
trx_no = models.CharField(max_length=20,primary_key=True)
はここに私のviews.pyです: はここに私のmodels.pyだ
class views_index(APIView):
def post(self,request):
action = request.POST['action']
if action == 'detail' :
resp = detail.as_view()(request)
class detail(APIView):
def dispatch(self,request):
##I want to validate first before get data
try:
detail = mst_trx.objects.select_related().get(pk=request.POST['trx_no'])
except mst_trx.DoesNotExist:
raise Http404("Transaction does not exist")
else:
serializer = TrxDetailSerializer(detail)
return serializer.data
そして、ここに私のserializer.pyです:
class TrxDetailSerializer(serializers.ModelSerializer):
class Meta:
model = mst_trx
fields = ('trx_no')
ビューからどのように呼び出すことができますか? thx –
@dennysaputraフォームのisValid()を呼び出すだけで、 'clean_fieldname'が呼び出されます。 'form = YourForm(request.POST) form.is_valid()' 詳細については、[official doc](https://docs.djangoproject.com/en/1.10/ref/forms/validation/)を参照してください。 ) – emme