2018-05-29-Django-01url传参

1 无参数情况

配置URL及其视图如下:

urlpatterns = [
    url(r"^$",index),
    ]
 def index(request):
 	return HttpResponse("我是index")

访问http://127.0.0.1:8000/index,输出结果为“我是index”

2 传递一个参数

配置URL及其视图如下,URL中通过正则指定一个参数:

urlpatterns = [
  url(r"^home/(.+)/$",home),
]

def home(request,name):
    return HttpResponse("这是{}的家".format(name))

访问http://39.105.77.167:8000/basketball/home/xiaoming/

输出结果:这是xiaoming的家

3 传递多个参数

参照第二种情况,以传递两个参数为例,

配置URL及其视图如下,URL通过正则

指定两个参数:

url(r"^home/(.+)/$",home),
    url(r"^people/(?P<name>\w+)/(?P<age>\w+)/$",people),
]

def people(request,name,age):
    return HttpResponse("这是:{}今年{}".format(name,age))

访问http://39.105.77.167:8000/basketball/people/xiaofang/21/

输出结果:这是:xiaofang今年21

4 通过传统的"?"传递参数

例如,http://39.105.77.167:8000/basketball/traditional/?name=xiaojun&age=18,

url中"?"之后表示传递的参数,这里传递了name和age两个参数。

通过这样的方式传递参数,就避免了正则匹配错误

或者匹配不到的情况。在Django中,此类参数的解析是通过request.GET.get或者request.POST.get

方法获取到的。

配置URL及其视图如下:

urlpatterns = [
 url(r"^traditional/$",traditional),   ]
 
 def traditional(request):
    name = request.GET.get('name',None)
    age = request.GET.get('age',None)
    return HttpResponse("名字:{};年龄:{}".format(name,age))

输出结果:名字:xiaojun;年龄:18

扩展

1 如果使用urls传统?方式传参,
  在html页面就不使用{% url %}模板,来传参
2 如果想使用{% url %}模板来实现传参,那么
  urls传参方式一般都是正则方式来传参,
  比如(分页,文章详情)
3 实际工作中,如果使用urls传统?方式传参,
  前端也页面传递大量参数,一般都是form表单
  方式或者ajax,不会使用,{% ur l%}这样的模板标签
  去传大量数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值