首页 > 解决方案 > 如何使用显示来自某些外部源的响应的 django rest 框架创建 Django API?

问题描述

我处于一种情况,我需要创建一个django apiwhich on call fromfrontend给出从其他来源内部获取的响应,而不是从serializersand models。目前我正在使用 django rest 框架来创建api如下

楷模

# Create your models here.
class submission(models.Model):
    # fixed fields to show on today panel/pending panel
    email_id = models.CharField(max_length=200, primary_key=True)
    email_sender = models.CharField(max_length=200, null=True, blank=True)


def __str__(self):
        return self.email_id

序列化器

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = submission
        fields = ('__all__')

意见

class SAMPLE(viewsets.ModelViewSet):
    queryset = submission.objects.all()
    serializer_class = UserSerializer

网址

router = DefaultRouter()
# user table
router.register('user_table_all_data', SAMPLE, basename='user_table_all_data')

它很有魅力,但为了和我一起工作,django rest framework我总是需要这样打电话1. Create model or use existing model, 2. Create serializers,3. Create Views,4. Create URLs

但是,如果我不想使用modelssay,例如我想显示来自其他来源的数据,say 包含json如下示例怎么办?

sampleData = {"Name":"RAJNISH","Age":32,"ADDRESS":"India"}

所以如果我API说'sample/someid (not pk)'

返回响应为

{"Name":"RAJNISH","Age":32,"ADDRESS":"India"}

我怎么能在 django rest 框架中做到这一点?

标签: pythondjangoapidjango-rest-framework

解决方案


使用基于函数的视图而不是基于类的视图

def sample(request):
    return Response(data={"Name":"RAJNISH","Age":32,"ADDRESS":"India"})

推荐阅读