DjangoRestFramework-如何定制前端?

DjangoRestFramework-如何定制前端?,django,angularjs,django-rest-framework,frontend,Django,Angularjs,Django Rest Framework,Frontend,这是我使用DjangoRestFramework的基本视图: class user_list(APIView): """ List all users, or create a new user. """ def get(self, request): users = User.objects.all() serializer = UserSerializer(users, many=True) return Res

这是我使用DjangoRestFramework的基本视图:

class user_list(APIView):
    """
    List all users, or create a new user.
    """
    def get(self, request):
        users = User.objects.all()
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)

    def post(self, request):
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
当我转到调用此视图的URL(localhost:8000/CMS/users)时,DjangoRestFramework已经有了一个前端,上面写着:

GET /CMS/users
HTTP 200 OK
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json

[
    {
        "username": "t",
    }
]
我如何定制这个?我想在前端使用AngularJS。我知道如果没有DjangoRestFramework,我会返回一个html模板,该模板位于Django应用程序目录中名为“Templates”的文件夹中。我被告知DjangoRestFramework非常有用,因为我可以创建一个返回JSON对象的RESTful API。我尝试将以下内容添加到我的settings.py文件中:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    )
}
但我似乎仍然不知道如何定制Django应用程序的前端。我知道有:

renderer_classes = (TemplateHTMLRenderer,)
在其中,我可以在视图中返回html页面,如下所示:

return Response({'user': self.object}, template_name='user_detail.html')

但是,返回实际的HTML页面是否会破坏DjangoRest框架返回JSON对象和创建RESTful API的功能呢?

首先,有一些东西可以让Django Rest框架更好地使用angular。直到我决定尝试灰烬,我一直在努力。尝试为您的问题提供一个有用的示例:

  • 通常,您希望将djangorestframeworkrestapi放在类似/Api的地方

  • 如果你正在做一个看似无处不在的单页应用程序,那么你可以将index.html作为一个模板提供(也就是说,你的默认主视图是一个模板视图,其中index.html作为模板)

  • 然后,您可以将angular html模板、angular/jquery/etc.javsScript和css文件作为普通静态文件。注意,您通常不希望django模板生成角度代码。首先,它使调试变得更加困难,其次,默认的angular和django模板语法在您说“通常您希望将DjangoRestFramework REST Api放在类似/Api的东西中”时使用相同的语法。您的意思是我希望DRF Api作为自己的应用程序吗?或者在settings.py文件所在的文件夹中?因为在链接到()的教程中,“示例”似乎是项目,“api”是“settings.py”文件所在的文件夹。看起来“api”基本上是它自己的应用程序(有models.py、serializers.py和url.py),但没有views.py。设置有点混乱。