接着上一篇播客代码
演示代码地址:
链接:https://pan.baidu.com/s/1oE88TKRQ6Avp3_UI2msL5Q
密码:g9qj
1, 为什么要获取请求参数?
- 前后台交互的需要, 譬如:
- a: 注册用户: 需要携带用户名, 手机号, 密码, 验证码信息
- b: 用户购物: 需要携带, 商品id, 商品名称, 商品价格信息
- c: 用户转账: 需要携带, 对方账户, 转账多少钱信息
- 等等…
2, 前台携带请求参数有哪些方式?
-
a, 查询字符串
- 譬如: http://127.0.0.1:8000?name=zhangsan&age=13
- 参数信息是: zhangsan, 13
-
b, 资源分隔符携带
- 譬如: http://127.0.0.1:8000/zhangsan/23
- 参数信息是: zhangsan, 13
-
c, 请求体
- 代码不易演示, 我们通过工具postman来:
- 参数信息是: zhangsan, 13
- 代码不易演示, 我们通过工具postman来:
-
d, 请求头
- 代码不易演示, 我们通过工具postman来:
- 参数信息是: zhangsan, 13
- 代码不易演示, 我们通过工具postman来:
3, 如何获取前台的几种参数
-
a, 查询字符串携带参数
-
1, 根路由(urls.py)
urlpatterns = [ path('admin/', admin.site.urls), # 添加 path('users/', include('users.urls')) ]
-
2, 子路由(users/urls.py)
from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/$', views.index), #1,查询字符串路由 url(r'^$', views.query_string), ]
-
3, 视图(users/views.py)
# index函数, 上一篇播客中有省略 # 1,查询字符串视图 def query_string(request): # 获取参数 name = request.GET.get("name") age = request.GET.get("age") # 打印参数 print("name = " + name) print("age = " + age) return HttpResponse("查询字符串获取参数")
-
4, 浏览器测试
- 浏览器
- pycharm控制台
- 浏览器
-
-
b, 资源分隔符携带参数
- 1, 根据路, 和上面a一样
- 2, 子路由(users/urls.py)
from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/$', views.index), #1,查询字符串路由 url(r'^$', views.query_string), # 2,资源分隔符携带 url(r'^(?P<name>[a-z]+)/(?P<age>\d+)/$', views.resource_function), ]
- 3, 视图(users/views.py)
# 2, 资源分隔符携带 def resource_function(request,name,age): # 打印参数 print("name = " + name) print("age = " + age) return HttpResponse("资源分隔符获取参数")
- 4, 浏览器测试
- 浏览器
- 控制台
- 浏览器
-
c, 请求体携带参数
-
1, 根据路, 和上面a一样
-
2, 子路由(users/urls.py)
from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/$', views.index), #1,查询字符串路由 url(r'^$', views.query_string), # 2,资源分隔符携带 url(r'^(?P<name>[a-z]+)/(?P<age>\d+)/$', views.resource_function), # 3,请求体携带参数 url(r'^body/$', views.body_function), ]
-
3, 视图(users/views.py)
# 3,请求体携带参数 def body_function(request): # 获取参数 data = request.body.decode() # 打印参数 print(data) return HttpResponse("请求体携带参数")
-
4, postman测试
- postman发送请求
- pycharm控制台输出
- postman发送请求
-
-
d, 请求头
-
1, 根路由, 和上面a一样
-
2, 子路由(users/urls.py)
from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/$', views.index), #1,查询字符串路由 url(r'^$', views.query_string), # 2,资源分隔符携带 url(r'^(?P<name>[a-z]+)/(?P<age>\d+)/$', views.resource_function), # 3,请求体携带参数 url(r'^body/$', views.body_function), # 4,请求头携带参数 url(r'^header/$', views.header_function), ]
-
3, 类视图(users/views.py)
# 4,请求头携带参数 def header_function(request): # 获取参数 name = request.headers.get("name") age = request.headers.get("age") # 打印参数 print("name = " + name) print("age = " + age) return HttpResponse("请求头携带参数")
-
4, postman测试
- postman
- 控制台输出
- postman
-
若有不清楚的, 添加QQ群
免费答疑服务: 772044423