在django rest框架中使用泛型视图创建简单列表API端点的一种简单方法
我想在我的站点上通过ajax自动完成用户名,因此我想要一个API端点,该端点只返回一个简单的数组和字符串,如:在django rest框架中使用泛型视图创建简单列表API端点的一种简单方法,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我想在我的站点上通过ajax自动完成用户名,因此我想要一个API端点,该端点只返回一个简单的数组和字符串,如: [ "john", "doe", "cool_rick123", ... ] …具有可选筛选功能 现在,我可以想出一些笨拙的方法来实现这一点,但是在django rest框架中使用泛型视图的最佳实践干式方法是什么呢?我可以使用ListAPIView,但这会将其序列化为列表中的对象,而不仅仅是我所知道的列表中的名称字符串。假设您有一个属性为username的用户模型,并
[
"john",
"doe",
"cool_rick123",
...
]
…具有可选筛选功能
现在,我可以想出一些笨拙的方法来实现这一点,但是在django rest框架中使用泛型视图的最佳实践干式方法是什么呢?我可以使用ListAPIView,但这会将其序列化为列表中的对象,而不仅仅是我所知道的列表中的名称字符串。假设您有一个属性为username的用户模型,并且希望自动完成该模型 序列化程序.py viewsets.py 您的url模式可能类似于/users/autocomplete/?username=(username) 这里用户名是可选的。如果您不将username作为get参数传递,它仍将返回所有用户名的列表您知道您需要仅包含用户名的平坦版本吗?我只会将用户实例作为整体对象提供,并在您实际发现这是一个UI性能问题时进行优化。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username')
class UserAutocompleteApi(viewsets.ModelViewSet):
serializer_class = UserSerializer
def get_queryset(self):
user_query = self.request.query_param.get('username')
queryset = User.objects.filter(username__icontains='')
return queryset