Django URL传递参数的方法总结

yipeiwu_com6年前Python基础

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″

相关文章

Python多层装饰器用法实例分析

本文实例讲述了Python多层装饰器用法。分享给大家供大家参考,具体如下: 前言 Python 的装饰器能够在不破坏函数原本结构的基础上,对函数的功能进行补充。当我们需要对一个函数补充不...

TF-IDF与余弦相似性的应用(二) 找出相似文章

TF-IDF与余弦相似性的应用(二) 找出相似文章

上一次,我用TF-IDF算法自动提取关键词。 今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方...

python使用marshal模块序列化实例

本文实例讲述了python使用marshal模块序列化的方法,分享给大家供大家参考。具体方法如下: 先来看看下面这段代码: import marshal data1 = ['abc'...

python读取csv文件并把文件放入一个list中的实例讲解

如下所示: #coding=utf8 ''' 读取CSV文件,把csv文件放在一份list中。 ''' import csv class readCSV(object): def...

Python 实现将数组/矩阵转换成Image类

Python 实现将数组/矩阵转换成Image类

先说明一下为什么要将数组转换成Image类。我处理的图像是FITS (Flexible Image Transport System)文件,是一种灰度图像文件,也就是单通道图像。 FIT...