您的位置:首页 > 编程语言 > Go语言

(二)Django框架路由参数

2019-03-10 14:04 423 查看

django解析路由的流程

项目的urls.py的文件中包含的是具体应用的urls
应用中的urls.py文件 包含的是视图函数的对应关系
路由解析的顺序, 从上到下,有可能后面的被前面的屏蔽
浏览器中, url要以/ 结尾, 不写会django重定向后添加
路由的取名:
给应用的名字: namespace = “”
函数的别名name=""
路由的反解析: reverse
a. 对于未指明路由命令空间: reverse(子路由name)
b. 指明命名空间: reverse(总namespace: 子路由name)

路径中末尾中以/结尾是防止正则匹配的时候被上面的屏蔽

url中提取参数

1.起始行 提取url中的特定部分. /weather/beijing/123
查询字符串: ?k1=v2&k2=v2
请求头(header) cookie中的数据
body 可以是字符串可以是二进制文件
格式不统一
表单数据, json xml
2. 提取参数的两种方式: url中添加正则,
正则不命名: 视图函数中, 接受参数按照顺序
正则命名: (?P[a-z]+) 关键字参数的方式传参
3. QueryDict对象
与字典不同的是, 一个键可以取出不同的对象
get() 如果一个键中有多个值, 获取最后一个,不存在返回None
getlist() 获取同一个键的所有值,返回一个列表
HttpRequest对象的属性GET、POST都是QueryDict类型的对象
查询字符串:

获取参数

定义的视图函数参数的方式不区分post和get都能获取到方式
GET代表的是查询字符串, 不是get请求方式

  • 获取请求体中的数据:
    表单类型 请求体中的数据是表单类型,无论是POST PUT PATCH DELETE都是request.POST的获取请求体中的表单数据
    表单格式数据的原始字符串是:

  • 非表单类型 django无法自动解析,
    request.body 属性获取最原始的请求数据, 返回的是bytes类型
    json.loads() 参数的类型, python3.6 str bytes python3.5 str
    获取body中json格式的数据: 字节----->字符串 decode

  • 获取请求头与其他的属性, 全大写, 下划线
    request.META 属性获取请求头中的数据, 字典类型
    requset.META[‘CONTENT_TYPE’]

  • 常用HttpRequset对象属性:
    method: 字符串, 请求使用的HTTP方法
    user: 请求的用户对象
    path: 字符串, 请求页面的完整路径, 不包含域名和参数部分
    encoding: 字符串, 提交数据的编码格式
    FILES: 类似字典的对象, 包含所有的上传文件

HttpResponse 对象

使用django.http.HttpResponse 来构造响应对象
HttpResponse(content=响应体, content_type= 响应体数据类型, stauts=状态吗)
先创建对象在添加属性:
response = HttpResponse()
设置相应内容 response.content = “”
设置状态吗 response.status_code = "
设置header response[‘Itcast’] = “Python”
HttpResponse子类 HttpResponseRedirect 301
设置301的状态码
JsonResponse 用于返回json数据

重定向 redirect

redirect函数返回的是一个HttpResponse 对象
301 永久重定向, 域名跳转
302 临时跳转, 登录用户个人中心跳转到首页

cookie操作:

HttpResponse.set_cookie(cookie名, value=cookie值, max_age =cookie有效期
读取cookie request.COOKIE.get()

session

存放的位置: 数据库中本地缓存, 文件, redis中
写 request.session[‘key’] = value
读 request.session.get(key, 默认’)
清除所有session request.session.clear()
存储中删除值部分
清除session中的整条数据 request.session.flush()
删除session中的指定键及值 del request.session[‘键’]
设置session的有效期 request.session.set_expiry(value秒)
value 为0 对话结束立即清除

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: