Django获取请求内容(FBV)

1.获取url中的请求参数
需求:假设用户访问127.0.0.1/user/1/2,你想获取1,2。应该怎么操作呢?
(1)未命名参数(位置参数)
1 2 3 4 5 6 |
# 在项目下的urls.py下增加设置: url(r'^user/(\d+)/(\d+)$',views.index) # 在user.views的index视图中: def index(request,a,b): # 接受的参数按顺序的 return HttpResponse("获得数据 %s %s"%(a,b)) |
(2)命名参数(关键字参数)
1 2 3 4 5 6 |
# 在项目下的urls.py下增加设置: url(r'^user/(?P<category>\d+)/(?P<id>\d+)$',views.index)
# 在user.views的index视图中: def index(request,id,category): # 接受的参数可以不用按顺序的 return HttpResponse("获得数据 %s %s"%(category,id)) |
2.获取查询字符串
需求:获取127.0.0.1:8000/user?id=1&pid=99的查询字符串的值
1 2 3 4 5 6 7 8 |
# 在项目下的urls.py下增加设置: url(r'^user/$',views.index)
# 在user.views的index视图中: def index(request): id = request.GET.get("id") pid = request.GET.get("pid") return HttpResponse("获得数据 %s %s"%(id,pid)) |
注意:查询字符串的获取与请求方式无关:不管是 GET 还是 POST请求,都可以通过request.GET 属性来获取!!!
3.获取表单数据
request.POST.get(“username”)
request.POST 只能用来获取POST方式的请求体表单数据!
4. .获取非表单类型
· request.body属性:获取非表单类型的请求体数据,如:JSON、XML等,获取到的数据类型为bytes类型
· 获取数据后,自己解析数据取出参数
1 2 3 4 5 6 7 |
def index(request): json_str = request.body json_str = json_str.decode() # python3.6及以上不用这一句代码 dict_data = json.loads(json_str) # loads把str转换为dict,dumps把dict转换为str id = dict_data.get("id") pid = dict_data.get("pid") return HttpResponse("获得数据 %s %s"%(id,pid)) |
5.获取请求头内容的用META
示例:
1 2 3 |
def index(request): ip = request.META.get("REMOTE_ADDR") return HttpResponse("你的ip地址是%s"%ip) |
https://www.cnblogs.com/liudinglong/p/12543733.html
https://www.jianshu.com/p/dd323aa79e34
议事
您可在此留下对本篇文章的个人看法*以作探讨