【发布时间】:2016-02-08 22:03:47
【问题描述】:
我想要的是,如果用户访问此 URL:
/user/22
那么前端应该为pk值为22的用户呈现一个HTML页面。这是我的URLs.py:
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
urlpatterns = [
url(r'^user/(?P<pk>[0-9]+)$', views.UserPageView.as_view()),
url(r'^', include(router.urls)),
]
这是 UserPageView:
class UserPageView(generics.RetrieveAPIView):
queryset = User.objects.all()
renderer_classes = (TemplateHTMLRenderer,)
def get(self, request, *args, **kwargs):
self.user = self.get_object()
return Response({'user': self.user}, template_name='user.html')
这是我的 UserViewSet:
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = (IsCreationOrAuthenticated, IsWatchOrOwnerOrReadOnly,)
假设“用户”是一个 JS 对象,我计划通过使用 AngularJS 向以下 URL 发送一个获取请求来使用我的 DRF API:
("/users/" + user.pk) // which leads to UserViewSet (which serializes the user object)
获取该特定用户的信息。但是,user 不是 JSON 对象,它是一个 Django 变量,我可以使用 Django 模板标签在模板中使用它,如下所示:{{ user }}。
如何让我的 DRF 视图也将 JSON 返回到 HTML 模板?对我来说最好的方法是什么?提前致谢!
【问题讨论】:
标签: json django django-rest-framework html-rendering