1.请求路径中的参数【例如:http://www.baidu.com/text/value这里的value可以传递数据给路由,之后视图就可以取得这个参数】
'''
请求:http://www.baidu.com/text/value
请求方式: get
路由:text/<value>/
'''
#下面两种方式视图任选其一都可以接收到参数
#类视图:
class NewView(View):
def get(self,request,value):
pass
#函数视图:
def newview(request,value):
pass
2.查询字符串传递数据【查询字符串的定义方式:http://www.baidu.com/text/value/?order=qwe&page=1&order=ewq】在路径后写一个'?'然后可以定义查询字符串中间以&连接
查询字符串数据放在request.GET中是一个Querydict对象支持一键多值,这就是上面的查询字符串中又两个order也可以的原因
'''
请求:http://www.baidu.com/text/value/?order=qwe&page=1&order=ewq
请求方式: get
获取查询字符串中的值的方法:
'''
#获取page:
request.GET.get('page')
#这种方式如果是一键多值的情况只会获取到该键的最后一个值,也就是ewq
#获取order:
request.GET.get('order')
#获取全部order值,获取到的是一个列表
request.GET.getlist('order')
3.form表单传递数据
#form表单传递数据,数据放在request.POST中也是一个Querydict对象
#获取方法类似查询字符串
value = request.POST.get('key')
json和xml传递数据
'''
前后端交互使用最多的就是json,一般前后端分离的项目都是使用json进行传递数据
json数据保存在request.body中
json数据看起来像字典但是不同于字典的是json用的是双引号:[还有一点要注意的是json如果后面没有数据的话就不要再加逗号分隔了否则会报错,定义字典最后加逗号的好习惯在json中不适用]
字典:{'key':'value','key2','value2',}
json: {"key":"value","key2","value2"}
'''
#导入json方便使用dumps和loads方法转换数据
import json
#接收json数据,第一步接收到的是base数据
body_data = request.body
#将base数据转化为字符串
body_str = body_data.decode()
#将字符串转化为字典
#json.loads()方法可以将字符串转化为字典,一般用于接收json数据
#json.dumps()方法可以将json数据转化为字符串,一般用于将json数据转化后作为响应数据返回给前端
body_dict = json.loads(body_str)
4.请求头传递数据
'''
请求头的数据都放在request.META中
cookie信息就放在请求头中
'''
#获取请求头中的数据
reqeust.META.get('key')