python_web学习笔记二:django基础篇之请求与响应

一、请求

1.路径传参

路由示例

# 路由
url(r'^route/(?P<a>[a-z]+)/$', views.ro),

视图示例

def ro(request, a):
    print("a=%s" % a)
    return http.HttpResponse("ok")

2.查询字符串

路由示例

url(r'^query/$', views.query),

视图示例

def query(request):
    data = request.GET
    a = data.get("a")  # 获取最后一个值
    b = data.get("b")
    alist = data.getlist("a")  # 获取所有
    print(a)
    print(b)
    print(alist)
    return http.HttpResponse("OK")

请求示例(可用postman)

# 方式GET
http://127.0.0.1:8000/basics/query/?a=1&b=2&a=3
# 注:ip地址由自己设置而定,随机应变

3.非表单类型

路由示例

url(r'^getbodyjs/$', views.get_body_js),

视图示例

def get_body_js(request):
    data = json.loads(request.body.decode())
    a = data.get("a")
    b = data.get("b")
    print(a, b)
    return http.HttpResponse("OK")

请求示例

# GET方式
# 可以先在setting中注释掉  'django.middleware.csrf.CsrfViewMiddleware',
http://192.168.230.128:8000/basics/getbodyjs/
# 请求内容:json
{
	"a": 1,
	"b": 3
}

4.表单类型

路由示例

url(r'^getbody/$', views.get_body),

视图示例

def get_body(request):
    data = request.POST
    a = data.get("a")
    b = data.get("b")
    alist = data.getlist("a")
    print(a)
    print(b)
    print(alist)
    return http.HttpResponse("OK")

请求示例

# POST方式
http://192.168.230.128:8000/basics/getbody/
# 表单示例:
key  value
a	 1
b	 2
a	 3

5请求头

META["CONTENT_TYPE"]  # 数据类型
META["REQUEST_METHOD"]
META["CONTENT_LENGTH"]  # 数据长度
META["HTTP_ACCEPT_LANGUAGE"]
META["HTTP_REFERER"]  # 上一页是什么
META["HTTP_USER_AGENT"]  # 客户端信息吗?
META["QUERY_STRING"]  # 查询字符串
META["REMOTE_ADDR"]  # 客户端IP
META["REMOTE_HOST"]  # 主机地址。空?
META["REMOTE_USER"]  # http基本认证
META["SERVER_NAME"]  # 服务端IP
META["SERVER_PORT"]  # 服务端口

二、响应

1.HttpResponse

路由示例

url(r'^res/$', views.res),

视图示例

def res(request):
    response = http.HttpResponse('django')
    response.status_code = 400
    response["a"] = "python"
    return response

请求示例

# GET
http://192.168.230.128:8000/basics/res/
# body中可看到django,headers中可看到 a   python

子类

HttpResponseRedirect 301
HttpResponsePermanentRedirect 302
HttpResponseNotModified 304
HttpResponseBadRequest 400
HttpResponseNotFound 404
HttpResponseForbidden 403
HttpResponseNotAllowed 405
HttpResponseGone 410
HttpResponseServerError 500

2.JsonResponse

路由示例

url(r'^resjs/$', views.res_js),

视图示例

def res_js(request):
    return http.JsonResponse({"name": "小明", "age": 18})

请求示例

# GET
http://192.168.230.128:8000/basics/resjs/
# 返回结果
{
    "age": 18,
    "name": "小明"
}

3.重定向

路由示例

url(r'^red/$', views.red),

视图示例

def red(reuqest):
    response = redirect("try/")
    return response
# 尝试了三种定向地址写法得到不同的结果

请求示例

# GET
http://192.168.230.128:8000/basics/red/
# try/
重定向至:/basics/red/try/
# /try
重定向至:/try
# /try/
重定向至:/try/
# 没有写try的路由所以会找不到,看后台显示的重定向地址请求即可

4.cookie

路由示例

url(r'^setcookie1/$', views.set_cookie1),

视图示例

def set_cookie1(request):
    response = http.HttpResponse("set cookies")
    response.set_cookie(key="name", value="sad", max_age=20)
    return response
# 设置内容包含中文时报了错,暂时不太明原因
# max_age单位为秒

请求示例

# GET
http://192.168.230.128:8000/basics/setcookie1/
# 可以看到cookie

获取方式不详述

req = request.COOKIES.get("name")

5.session

设置

request.session["name"] = "laoli"
request.session["age"] = 18

获取

name = request.session.get("name")
age = request.session.get("age")

设置时间

request.session.set_expiry(10)

删除

request.session.pop("name")
request.session.flush()  # 在数据库里也删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值