Django url参数传递(与flask对比)
查过不少资料,对各种传参和urls.py的配置都乱得很,于是捋了一下。
views.py
def test_1(request):
# 通过get请求传递参数
# 使用"?"的方式,url中带命名参数,且urls.py配置里不带参数。
# url:http://xx.com/test1/?param1=xx¶m2=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¶m2=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)
本文来自博客园,作者:苏酒酒,转载请注明原文链接:https://www.cnblogs.com/sujiujiu/p/15370018.html