django get和post获取请求参数或路由变量
· 阅读需 2 分钟
前言
前后端分离的情况下,数据通过 axios 传输到后端,如何取出携带的数据?
get 请求
get 请求里面,可能携带的参数位置都在 url 上,分别是路径上的参数和查询参数:
类视图中的获取方式如下:
def get(self, request, *args, **kwargs):
user_id = kwargs.get('id') # 路径参数
filter_type = request.GET.get('query') # 查询参数
而在 urls.py 中,pk 要作为参数的名字被设置:
path('friend/request/<uuid:pk>/', api.FriendshipRequestView.as_view(), name='friendshiprequest'),
post 请求
两种可能的参数,一种是通过表单传来的数据,另一种是通过 json 格式传来的数据:
axios.post('/api/login/', this.form) # 通过表单
axios.post('api/post/', {'body': this.body}) # 通过json
他们的获取方式分 别是:
def post(self, request, *args, **kwargs):
form = request.POST # 表单
body = request.data.get('body') # json
request.data 也可以获得表单数据,所以建议还是都用 request.data