【问题标题】:DjangoRestFramework - How do I customize the frontend?DjangoRestFramework - 如何自定义前端?
【发布时间】:2015-07-17 07:08:41
【问题描述】:

这是我使用 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 App 目录中名为“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 页面是否违背了 DjangoRestFramework 返回 JSON 对象和创建 RESTful API 的能力的目的?

【问题讨论】:

    标签: django angularjs django-rest-framework frontend


    【解决方案1】:

    首先,有一些事情可以让 Django Rest Framework 更好地使用 Angular。在我决定试用 ember 之前,我一直在使用 this utorial。尝试为您的问题提供一个有用的示例:

    1. 通常,您希望将 DjangoRestFramework REST Api 放在 /api 之类的位置。

    2. 1234563
    3. 然后您将拥有 Angular html 模板和 angular/jquery/etc。 javsascripts 和您的 css 文件作为普通静态文件。请注意,您通常不希望 django 模板生成角度代码。首先,它使调试变得更加痛苦,其次,默认的 angular 和 django 模板语法使用相同的

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

    【讨论】:

    • 当你说“通常你想把你的 DjangoRestFramework REST Api 放在 /api 中”。你的意思是我想要 DRF API 作为它自己的应用程序?还是在 settings.py 文件所在的自己的文件夹中?因为在您链接到的教程(github.com/kevinastone/django-api-rest-and-angular/tree/master/…)中,似乎“example”是项目,“api”是“settings.py”文件所在的文件夹。看起来'api'基本上是它自己的应用程序(有models.py、serializers.py和urls.py),但没有views.py。设置有点混乱。
    猜你喜欢
    • 2019-10-10
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2013-05-10
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多