django中给url传递参数可以有多种方式,我最近使用时候找了一些资料,现在整理如下:
1.第一种,直接在url地址中用固定格式传递
在url.py中代码如下
urlpatterns = [
url('info/(.+)/(.+)/$',views.info,name='info'),
]
在views.py中代码:
def info(request,param1,param2):
print(para1)
print(para2)
return HttpResponse("第一个参数是:"+param1+",第二个参数是:"+param2)
在浏览器中访问:
![](https://img-blog.csdnimg.cn/img_convert/7eef623b8b130d09a57b6437bd9fde6e.png)
返回结果是:
![](https://img-blog.csdnimg.cn/img_convert/b9a62f089c8130b12d6e6ca821254a81.png)
2.第二种,传统的“?”传递参数
例如,http://127.0.0.1:8000/info/?p1=1&p2=2,url中‘?'之后表示传递的参数,这里传递了p1和p2两个参数。通过这样的方式传递参数,就不会出现因为正则匹配错误而导致的问题了。在Django中,此类参数的解析是通过request.GET.get方法获取的。
在url.py中代码如下:
urlpatterns = [
url('viewdoc/$',views.info,name='info'),
]
在views.py中代码如下:
def viewdoc(request):
p1=(request.GET.get('p1'))
p2=(request.GET.get('p2'))
return HttpResponse("第一个参数p1是:"+p1+",第二个参数p2是:"+p2)
注意:GET关键字一定要大写,不然会出错。
在浏览器中访问:
![](https://img-blog.csdnimg.cn/img_convert/8df17618582aa6f6ac0f0dba2f1fc39f.png)
输出结果为:
![](https://img-blog.csdnimg.cn/img_convert/75162d29ea7fd460fde82fd1fa949a1e.png)