代码改变世界

109-get方式获取url传值

2019-08-21 00:13  lzhshn  阅读(1295)  评论(0编辑  收藏  举报

url中可以包含一些参数,这些参数可能是被拼凑出来的,也可能是直接手写进去的。

首先看如何用get的方式,获取url里的值。

 

1、get方式,例如网址是/?x=1&y=2这种,这里的x和y都是变量

先看views函数,我们设计了两个不同类型的取值。一个用来组合字符串,另一个用来计算幂(杨幂的幂)

特别说明:

get里面,第一个参数是django默认把变量进行了类似{'name': name}的包装,所以都是带引号的变量;

第二个参数是默认值,当没有进行赋值时,使用默认值;

如果赋值会直接报错,默认值无效

# 编写一个函数,尝试从url里捕获值,并显示到一个返回页面中
# 想能够处理任意url会比较麻烦,我们假设处理一种限定格式的url
def test_get(request):
    name = request.GET.get('name', 'guest')
    gender = request.GET.get('gender', 'unknown')
    return HttpResponse('%s的性别是:%s' % (name, gender))


# 使用同样的方式,计算任意次方,a的n次方
def test_power(request):
    a = request.GET.get('a', 0)
    n = request.GET.get('n', 0)
    result = int(a) ** int(n)
    return HttpResponse('%s的%s次方是%d' % (a, n, result))

 

2、按格式书写url

from django.urls import path
from . import views

urlpatterns = [
    path('test_get/', views.test_get, name='test_get'),
    path('test_power/', views.test_power, name='test_power'),
]

 可以看见,在test_urls.py里的设置没有任何特殊,只需要指向views的对应函数即可,要做的只是在最后加上?x=x&y=y

 

如果输入:http://127.0.0.1:8000/test_app/test_get/?name=赵丽颖&gender=女

回车得到页面,里面显示为:赵丽颖的性别是:女

 

如果输入:http://127.0.0.1:8000/test_app/test_power/?a=12&n=4

回车得到页面,里面显示为:12的4次方是20736