django 获取参数的方式
1. 获取url中的请求参数
1.1 位置参数
需求:获取127.0.0.1:9000/index/1/2 上的url参数
urls.py 中设置 url(r'^index/(\d+)/(\d+)$', views.IndexView.as_view())
在views.py 中IndexView类视图中
class IndexView(View):
def get(self, request, a,b):
print(a,b)
return JsonResponse({"a":a, "b":b})
1.2 命名参数
需求: 获取127.0.0.1:9000/article/1/2上的url参数
urls.py 中设置 url(r'^article/(?P
在 views.py 中Article类视图中
class Article(View):
def get(self, request, id, page):
return JsonResponse({"page":page, "id":id})
2. 获取查询字符串参数
需求:获取127.0.0.1:8000/user?id=1&pid=99的查询字符串的值
urls.py 中设置 path("user", views.User.as_view())
在views.py 中设置 User 类视图
class User(View):
def get(self, request):
username = request.GET.get("username")
password = request.GET.get("password")
return JsonResponse({"username": username, "password": password})
3. 获取表单数据
需求: 获取form表单数据。
urls.py 中设置 path("user", views.User.as_view())
在views.py 中设置 User 类视图
class User(View):
def post(self, request):
username = request.POST.get("username")
password = request.POST.get("password")
return JsonResponse({"username": username, "password": password})
4. 获取非表单数据
需求: 获取非表单数据, 例如 JSON、XML数据等等。
dictData = request.body.decode() # request.body 为获取非表单类型的请求数据。数据类型为bytes, 故此需要decode()
# 上面代码 已经将 json、xml等类型的数据解析成字典类型 进行获取就可以了。
username = dictData.get("username")
password = dictData.get("password")
urls.py 中设置 path("user", views.User.as_view())
在views.py 中设置 User 类视图
class User(View):
def get(self, request):
dictData = request.body
dictData = eval(dictData.decode()) # 如果dictData 解析结果为str 则需要 eval() 函数转化成合适的类型 即字典
print(dictData, type(dictData))
username = dictData.get("username")
password = dictData.get("password")
return JsonResponse({"username": username, "password": password})
5. 获取请求头数据
urls.py 中设置 path("user", views.User.as_view())
在views.py 中设置 User 类视图
class User(View):
def get(self, request):
content_type = request.META.get("CONTENT_TYPE")
return JsonResponse({"CONTENT_TYPE": content_type})
6. 获取cookie数据
name = request.COOKIES.get('name')
7. 获取session数据
name = request.session.get('name')