Django获取请求内容(FBV)


作者:  irvingLee

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.viewsindex视图中:

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.viewsindex视图中:

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)  # loadsstr转换为dictdumpsdict转换为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


议事

您可在此留下对本篇文章的个人看法*以作探讨

无名氏  || 2020年11月30日 15:13