如何根据客户端django rest框架从ViewSets返回html或json

时间:2018-03-07 15:12:48

标签: python django api django-rest-framework

我为移动开发人员创建了一个API端点,其中包含所有逻辑。现在我需要创建这个应用程序的Web版本。是否有可能不专门为此编写视图,但在API中使用已有的视图? 在API我使用Django Rest Framework ViewSets。 假设这是我的models.py

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=20)
    description = models.CharField(max_length=100, blank=True, null=True)

然后这将是我的serializers.py:

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ('id', 'title', 'description')
        read_only_fields = ('id',)

viewsets.py:

from rest_framework import viewsets
from .serializers import PostSerializer
from .models import Post

class PostViewSet(viewsets.ModelViewSet):
    model = Post
    queryset = Post.objects.all()
    serializer_class = PostSerializer

urls.py

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'posts', viewsets.Post, base_name='post')
urlpatterns = router.urls

我在文档中看到了这个HTML & Forms,但是如果我放了renderer_classes和template_name,它只是使用我想要的参数呈现html,但是我想要一个单独的端点来返回json for mobile开发人员并为Web版本呈现用户友好的html。是否可以这样做,如果是,我该如何处理?

1 个答案:

答案 0 :(得分:0)

我认为您必须手动创建一个单独的端点来处理HTML请求,但您可以使用Template Renderers轻松实现此目的