GET属性

  • 请求格式:在请求地址结尾使用?,之后以“键=值”的格式拼接,多个键值对之间以&连接
  • 例:网址如下
http://www.itcast.cn/?a=10&b=20&c=python
  • 其中的请求参数为
a=10&b=20&c=python
  • 分析请求参数,键为'a'、'b'、'c',值为'10'、'20'、'python'
  • 在Django中可以使用HttpRequest对象的GET属性获得get方式请求的参数
  • GET属性返回QueryDict类型的对象,键和值都是字符串类型
  • 键是开发人员在编写代码时确定下来的
  • 值是根据数据生成的

示例

  • 打开booktest/views.py文件,创建视图get1、get2、get3
# 创建链接
def get1(request):
    return render(request,'booktest/get1.html')
# 接收一键一值
def get2(request):
    return render(request,'booktest/get2.html')
# 接收一键多值
def get3(request):
    return render(request,'booktest/get3.html')
  • 打开booktest/urls.py文件,配置url
    url(r'^get1/$',views.get1),
    url(r'^get2/$',views.get2),
    url(r'^get3/$',views.get3),
  • 在templates/booktest目录下创建get1.html,代码如下
<html>
<head>
    <title>GET属性</title>
</head>
<body>
链接1:一个键传递一个值<br>
<a href="/get2/?a=1&b=2">get2</a>
<hr>
链接2:一个键传递多个值<br>
<a href="/get3/?a=1&a=2&b=3">get3</a>
</body>
</html>
  • 运行服务器,请求get1
http://127.0.0.1:8000/get1/
  • 浏览效果如下图

get1

  • 完善视图get2的代码如下
# 接收一键一值
def get2(request):
    dict=request.GET
    a=dict.get('a')
    b=dict.get('b')
    c=dict.get('c','1')
    context={'a':a,'b':b,'c':c}
    return render(request,'booktest/get2.html',context)
  • 在templates/booktest目录下创建get2.html,代码如下
<html>
<head>
    <title>GET属性一键一值</title>
</head>
<body>
a:{{a}}
<hr>
b:{{b}}
<hr>
c:{{c}}
</body>
</html>
  • 点击链接get2,浏览效果如下图

get2

  • 完善视图get3的代码如下
# 接收一键多值
def get3(request):
    dict=request.GET
    a=dict.getlist('a')
    b=dict.get('b')
    context={'a':a,'b':b}
    return render(request,'booktest/get3.html',context)
  • 在templates/booktest目录下创建get3.html,代码如下
<html>
<head>
    <title>GET属性一键多值</title>
</head>
<body>
a:
<ul>
    {%for i in a%}
    <li>{{i}}</li>
    {%endfor%}
</ul>
<hr>
b:{{b}}
</body>
</html>
  • 后退到get1页面,点击链接get3,浏览效果如下图

get3