我需要制作一个 Rest API,它将接受 3 个输入:(input_list字符串句子列表)、from_lang(字符串)、to_lang(字符串),并在从数据库表中获取值后返回字符串列表。例子:
input - {input_list: ['how are you', 'see you later', 'where are you'], from_lang: 'english', to_lang: 'spanish' }
output - {['cómo estás', 'nos vemos más tarde', 'Dónde estás']}
服务将使用任何受支持语言的句子列表调用此 API,作为回报,如果数据库中存在翻译句子,则将获得相同长度的列表,如果不存在,则返回 null 值。
我应该如何进行?
我所做的是,我创建了一个序列化器来处理/验证传入请求serializers.py:
def supported_lang(value):
if value not in SUPPORTED_LANGUAGES:
print(value)
print(SUPPORTED_LANGUAGES)
raise serializers.ValidationError('Language not supported')
class TranslateSerializer(serializers.Serializer):
input_list = serializers.ListField(
child=serializers.CharField(allow_blank=False),
allow_empty=False
)
from_language = serializers.CharField(validators=[supported_lang])
to_language = serializers.CharField(validators=[supported_lang])
我定义了一个简单的模型来存储翻译model.py:
class TranslationModel(models.Model):
english = models.CharField(blank=False, max_length=MAX_LENGTH, unique=True)
spanish = models.CharField(blank=True, max_length=MAX_LENGTH)
italian = models.CharField(blank=True, max_length=MAX_LENGTH)
is_active = models.BooleanField(default=True)
然后在我的中views.py我处理了如下的帖子请求
class TranslateView(views.APIView):
def post(self, request):
serializer = TranslateSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serialized_data = serializer.validated_data
result = self.get_translations(serialized_data) # here i am confused
return Response(result)
到目前为止一切顺利,现在我很困惑如何从模型中获取数据以及如何返回数据(遵循最佳实践)。get_translations()我在中定义了一个函数views.py:
慕尼黑的夜晚无繁华
相关分类