如何配置Django REST禁用模板,仅返回JSON数据给Android应用?
嘿,这问题我之前对接移动端的时候也碰到过!要让你的接口只返回JSON、完全禁用模板渲染,刚好你已经在用Django REST Framework 3,咱们直接通过调整视图和配置就能搞定,具体步骤如下:
1. 修改
myapp/Views.py 核心是让视图只使用JSON渲染器,不管请求来自浏览器还是Android应用。把你的视图改成DRF的APIView子类(如果已经在用DRF视图,直接加配置就行):
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.renderers import JSONRenderer from .models import Contact # 替换成你的联系人模型 class ContactsAPIView(APIView): # 强制指定只使用JSON渲染器,拒绝其他渲染方式 renderer_classes = [JSONRenderer] def get(self, request): # 查询需要返回的联系人数据,按需选择字段 contact_list = Contact.objects.all().values('id', 'name', 'phone', 'email') # 用DRF的Response返回,自动序列化为JSON return Response({'data': contact_list})
提示:如果你的视图原本是用DRF的
GenericAPIView或者ViewSet,只需要在类里加上renderer_classes = [JSONRenderer]这一行就可以,不用重构整个视图逻辑。
2. 修改
myapp/urls.py 把上面的视图映射到对应的子URL:
from django.urls import path from .views import ContactsAPIView urlpatterns = [ # 对应/movil/contacts的子路径 path('contacts/', ContactsAPIView.as_view(), name='mobile-contacts'), ]
3. 修改
proyect/urls.py 将myapp的路由包含到/movil路径下:
from django.urls import path, include urlpatterns = [ # 保留你原有的其他路由... path('movil/', include('myapp.urls')), ]
这样改完之后,不管是Android应用请求还是浏览器访问www.mypage.com/movil/contacts,都会直接返回纯净的JSON数据,完全不会触发模板渲染。如果之后你还想限制只有Android应用能访问这个接口,可以再给视图加上自定义权限类(比如检查请求的User-Agent),不过当前需求这样改就足够啦!
内容的提问来源于stack exchange,提问作者J.leo
相关产品推荐
相关产品推荐

