首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DjangoRestFramework -如何自定义前端?

DjangoRestFramework -如何自定义前端?
EN

Stack Overflow用户
提问于 2015-05-07 06:23:01
回答 1查看 391关注 0票数 1

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

代码语言:javascript
复制
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)

当我转到调用这个视图的网址(本地主机:8000/CMS/users)时,DjangoRestFramework已经有了一个前端,上面写着:

代码语言:javascript
复制
GET /CMS/users
HTTP 200 OK
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json

[
    {
        "username": "t",
    }
]

我该如何定制它?我想在前端使用AngularJS。我知道如果没有DjangoRestFramework,我会返回一个html模板,它将位于我的Django App目录中一个名为"Templates“的文件夹中。有人告诉我DjangoRestFramework很有用,因为我可以创建一个JSON来返回RESTful对象。我尝试将以下内容添加到settings.py文件中:

代码语言:javascript
复制
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    )
}

但我似乎仍然不知道如何自定义我的Django应用程序的前端。我知道有以下几点:

代码语言:javascript
复制
renderer_classes = (TemplateHTMLRenderer,)

其中我可以在我的视图中返回一个html页面,如下所示:

代码语言:javascript
复制
return Response({'user': self.object}, template_name='user_detail.html')

但是返回实际的HTML页面不是违背了DjangoRestFramework返回RESTful对象和创建JSON应用程序接口的能力吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-07 10:13:37

首先,有一些东西可以让Django Rest框架更好地使用angular。在我决定尝试ember之前,我一直在使用this utorial。试着为你的问题提供一个有用的例子:

  1. 通常你想把你的DjangoRestFramework REST Api放在像/api这样的地方。
  2. 如果你正在做一个看似无处不在的单页面应用程序,那么你可以让index.html作为一个模板(也就是说,让你的默认主页视图成为一个以index.html为模板的TemplateView )
  3. ,然后你就可以拥有你的angular html模板和你的angular/jquery等javsascripts和css文件作为普通的静态文件。注意,您通常不希望让django模板生成angular代码。首先,它使调试变得更加痛苦,其次,默认的angular和django模板语法使用相同的<%个字符,这意味着您必须小心确保其中一个不会试图解释其他模板代码。

当您加载http://yourserver/时,这将打开index.html页面,该页面随后下拉angular内容,然后开始对REST api进行RESTful调用以生成数据。请注意,您可以开始混合使用Django表单等内容,但我建议您保持简单,一旦掌握了基础知识,就阅读链接文章(或其他文章)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30088728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档