【发布时间】: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