Python的Django框架中从url中捕捉文本的方法


Posted in Python onJuly 20, 2015

每个被捕获的参数将被作为纯Python字符串来发送,而不管正则表达式中的格式。 举个例子,在这行URLConf中:

(r'^articles/(?P<year>\d{4})/$', views.year_archive),

尽管 \d{4} 将只匹配整数的字符串,但是参数 year 是作为字符串传至 views.year_archive() 的,而不是整型。

当你在写视图代码时记住这点很重要,许多Python内建的方法对于接受的对象的类型很讲究。 许多内置Python函数是挑剔的(这是理所当然的)只接受特定类型的对象。 一个典型的的错误就是用字符串值而不是整数值来创建 datetime.date 对象:

>>> import datetime
>>> datetime.date('1993', '7', '9')
Traceback (most recent call last):
  ...
TypeError: an integer is required
>>> datetime.date(1993, 7, 9)
datetime.date(1993, 7, 9)

回到URLconf和视图处,错误看起来很可能是这样:

# urls.py

from django.conf.urls.defaults import *
from mysite import views

urlpatterns = patterns('',
  (r'^articles/(\d{4})/(\d{2})/(\d{2})/$', views.day_archive),
)

# views.py

import datetime

def day_archive(request, year, month, day):
  # The following statement raises a TypeError!
  date = datetime.date(year, month, day)

因此, day_archive() 应该这样写才是正确的:

def day_archive(request, year, month, day):
  date = datetime.date(int(year), int(month), int(day))

注意,当你传递了一个并不完全包含数字的字符串时, int() 会抛出 ValueError 的异常,不过我们已经避免了这个错误,因为在URLconf的正则表达式中已经确保只有包含数字的字符串才会传到这个视图函数中。
决定URLconf搜索的东西

当一个请求进来时,Django试着将请求的URL作为一个普通Python字符串进行URLconf模式匹配(而不是作为一个Unicode字符串)。 这并不包括 GET 或 POST 参数或域名。 它也不包括第一个斜杠,因为每个URL必定有一个斜杠。

例如,在向 http://www.example.com/myapp/ 的请求中,Django将试着去匹配 myapp/ 。在向 http://www.example.com/myapp/?page=3 的请求中,Django同样会去匹配 myapp/ 。

在解析URLconf时,请求方法(例如, POST , GET , HEAD )并 不会 被考虑。 换而言之,对于相同的URL的所有请求方法将被导向到相同的函数中。 因此根据请求方法来处理分支是视图函数的责任。

 

Python 相关文章推荐
Python实现将xml导入至excel
Nov 20 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python理解递归的方法总结
Jan 28 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
python数据预处理之数据标准化的几种处理方式
Jul 17 Python
python生成特定分布数的实例
Dec 05 Python
基于Python脚本实现邮件报警功能
May 20 Python
使用Python拟合函数曲线
Apr 14 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 #Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 #Python
python通过socket查询whois的方法
Jul 18 #Python
Python字符串匹配算法KMP实例
Jul 18 #Python
Python通过正则表达式选取callback的方法
Jul 18 #Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 #Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 #Python
You might like
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
JS原型链怎么理解
2016/06/27 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
浅析Python基础-流程控制
2016/03/18 Python
Python与R语言的简要对比
2017/11/14 Python
python使用mysql的两种使用方式
2018/03/07 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
自学python用什么系统好
2020/06/23 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
Servlet面试题库
2015/07/18 面试题
商务英语专业应届毕业生求职信
2013/10/28 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python
python获取对象信息的实例详解
2021/07/07 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis