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\d+)/(?P\d+)$', views.Article.as_view())
在 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')
posted @ 2021-01-10 23:31  萌新_python  阅读(574)  评论(0编辑  收藏  举报