我想要的是,如果用户访问此网址:
/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,)
假设&#39;用户&#39;是一个JS对象,我打算使用我的DRF API,通过使用AngularJS将get请求发送到以下URL:
("/users/" + user.pk) // which leads to UserViewSet (which serializes the user object)
获取该特定用户的信息。但是,user
不是JSON对象,它是一个Django变量,我可以使用Django模板标签在模板中使用它,如:{{ user }}
。
如何获取DRF视图以将JSON返回到HTML模板?对我来说最好的方法是什么?提前谢谢!
答案 0 :(得分:0)
我不确定它是否有可能以您当前的方式运作,因为首次遇到的网址将始终指引您UserPageView
。
但是,也许你应该看看DRF's format_suffixes。
使用其他格式,您可以指定是否要获取用户对象的JSON或HTML表示。