【转自ian的个人博客】http://www.icodelogic.com/?p=501

感谢ian的总结!

1 无参数情况
配置URL及其视图如下:
(r'^hello/$', hello)
 def hello(request):
    return HttpResponse("Hello World")
访问http://127.0.0.1:8000/hello,输出结果为“Hello World”

2 传递一个参数
配置URL及其视图如下,URL中通过正则指定一个参数:
(r'^plist/(.+)/$', helloParam)
 def helloParam(request,param1):
    return HttpResponse("The param is : " + param1)
访问http://127.0.0.1:8000/plist/china,输出结果为”The param is : china”

3 传递多个参数
参照第二种情况,以传递两个参数为例,配置URL及其视图如下,URL中通过正则指定两个参数:
(r'^plist/p1(\w+)p2(.+)/$', helloParams)
 def helloParams(request,param1,param2):
    return HttpResponse("p1 = " + param1 + "; p2 = " + param2)
访问http://127.0.0.1:8000/plist/p1chinap22012/
输出为”p1 = china; p2 = 2012″

从这里可以看出,视图的参数是根据URL的正则式,按顺序匹配并自动赋值的。虽然这样可以实现任意多个参数的传递,但是却不够灵活,URL看起来很混乱,而且由于是正则匹配,有些情况下容易出错。

4 通过传统的”?”传递参数
例如,http://127.0.0.1:8000/plist/?p1=china&p2=2012,url中‘?’之后表示传递的参数,这里传递了p1和p2两个参数。
通过这样的方式传递参数,就不会出现因为正则匹配错误而导致的问题了。在Django中,此类参数的解析是通过request.GET.get方法获取的。
配置URL及其视图如下:
(r'^plist/$', helloParams1)
 def helloParams(request):
    p1 = request.GET.get('p1')
    p2 = request.GET.get('p2')
    return HttpResponse("p1 = " + p1 + "; p2 = " + p2)
输出结果为”p1 = china; p2 = 2012″

Django通过URL传递参数的4种方法相关推荐

  1. Asp.net页面之间传递参数的几种方法

    Asp.net页面之间传递参数的几种方法 第一种方法: 通过URL链接地址传递Request.QueryString send.aspx:    protected void Button1_Clic ...

  2. vue 获取请求url_vue 获取url里参数的两种方法小结

    我就废话不多说了,大家还是直接看代码吧~ 第一种: const query = Qs.parse(location.search.substring(1)) let passport = query. ...

  3. Asp.net页面之间传递参数的几种方法荟萃

    第一种方法: 通过URL链接地址传递  send.aspx:   protected void Button1_Click(object sender,EventArgs e)     {       ...

  4. jsp传递参数的四种方法

    1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超链接:<a herf="index.jsp"?a= ...

  5. Android开发之fragment传递参数的两种方法

    非常简单一种是通过bundle,另外一种是通过fragment提供的instantiate(过时方法),都是kotlin版本,直接上代码吧: 方法一: //fragment传递参数方法一val fra ...

  6. jmeter跨线程组传多个值_Jmeter 跨线程组传递参数 之两种方法(转)

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

  7. 向基类构造函数传递参数的(两种方法)

    另外我们在使用第二种方式的时候要注意: 1.如果没有定义派生类的构造函数,那么将默认执行基类的构造函数. 2.如果派生类要向基类传递参数,那么必须在派生类里定义一个构造函数,该函数只起到向基类传递参数 ...

  8. springboot获取URL请求参数的几种方法

    原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于pos ...

  9. Js获取Url地址参数的几种方法

    方法一 URLSearchParams()函数 geturlparam(){let that=this// window.location.href 获取地址let url = 'https://xx ...

最新文章

  1. redis数据持久化的两种方式
  2. 【业务知识】档案数字化加工处理过程
  3. 洛谷P3809 后缀排序【后缀数组】【模板】
  4. 区块链的安全和智能合约
  5. java 对象列表_Java中的对象列表
  6. 设置 webbrowser 控件的表现形式,可以像你本机的IE浏览器一样
  7. 耳目一新的在线答疑服务背后的核心技术
  8. html一段文字弹窗提示代码,css3提示文字弹窗代码
  9. SqlServer批量插入测试数据
  10. 基于Android Studio游戏开发 飞机大战小游戏
  11. MATLAB切比雪夫带通滤波器
  12. java开发面试 自我介绍 与 项目介绍是重点
  13. [OS X軟件] 我一直在用的 司机会看的那种 免费资源又多
  14. 爬虫实战:遇上gb2312编码的网页
  15. windows只能单向ping通
  16. 标题: Excel地址 Excel单元格的地址表示很有趣,它使用字母来表示列号。 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列
  17. 关于HBuilderX背景颜色-粉色
  18. KU-600变电站综合自动化系统
  19. J2ME学习过程中的一点心得整理(参考:java手机/PDA程序设计入门 王森)
  20. spring cloud bus的使用及使用bus发布自定义事件

热门文章

  1. Shiro 那点事儿
  2. Android多媒体扫描过程(Android Media Scanner Prosess)
  3. 【转】c++中的sizeof
  4. E: Unable to locate package ros-kinetic-usb-cam
  5. laravel实现读写分离
  6. 深入理解java虚拟机---读书笔记
  7. RedisClient的安装及基本使用
  8. 高并发编程基础(java.util.concurrent包常见类基础)
  9. ES6的十大特性和认知
  10. 第九章 泛型结构和接口