Django url参数传递(与flask对比)

查过不少资料,对各种传参和urls.py的配置都乱得很,于是捋了一下。

views.py

def test_1(request):
    # 通过get请求传递参数
    # 使用"?"的方式,url中带命名参数,且urls.py配置里不带参数。
    # url:http://xx.com/test1/?param1=xx&param2=xx
    param1 = request.GET.get('param1')
    param2 = request.GET.get('param2')
    return HttpResponse("param1:"+param1, "param2:"+param2)

def test_2(request, param1, param2):
    # 不使用get请求,而通过函数传参
    # url不带参数,urls.py配置里要带参数。
    # url:http://xx.com/test2/123/23
    return HttpResponse("param1:"+param1, "param2:"+param2)

urls.py

urlpatterns = [
    # url:http://xx.com/test1/?param1=xx&param2=xx
    url(r'^test1/$', views.test_1),
    # url:http://xx.com/test2/123/23
    url(r'^test2/(\d+)/(\d+)/$', views.test_2),
 ]

总结就是如果是在函数里传了参数,则url也要传,否则不用。

这两者的区别,如果学过flask会更好理解:

1)、 用get请求的方式,在urls.py的url里不用带参数。这种方式代码类似flask的:

@app.route('/test/', methods=['GET'])
def test_1():
    param_1 = flask.request.args.get('param1')
    param_2 = flask.request.args.get('param2')
    return "param1:%s, param2:%s" % (param1,param2)

2)、 在函数里传参的方式,在urls.py的url里需要带参数。这种方式类似flask中的:

@app.route('/test/<param1>/<param2>', methods=['GET'])
def profile(param1,param2):
    return "param1:%s, param2:%s" % (param1,param2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值