欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-25 11:13:53
...

查过不少资料,对各种传参和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)
相关标签: django URL