[urls.py设置技巧]URLconf处理其三:URL匹配返回结果
来源:互联网 发布:oracle数据库建表语句 编辑:程序博客网 时间:2024/05/29 08:15
注:以下内容转载自 现代魔法学院 网站的 URLconf处理其三:URL匹配返回结果 一文,仅供学习使用。
匹配结果
匹配结果是指当 URL 被正确匹配时,需返回的匹配结果。匹配结果需指定以下几个内容:
- 一个可调用对象。通常是视图函数。
- 视图函数参数。通常是 URL 模式中正则表达式命名组匹配的值。
- 视图函数关键字参数。通常是 url 方法中设置传递给视图函数的参数(字典形式)。
- 可选的 URL 名称参数。
- 可选的 APP 名称参数。
- 可选的命名空间参数。
类 django.core.urlresolvers.ResolverMatch 用来表示匹配结果。
ResolverMatch 类实现了 __getitem__ 方法,可以同元组操作一样,获取视图函数引用与视图函数参数,从而具备调用视图函数的条件。
class ResolverMatch(object): def __init__(self, func, args, kwargs, url_name=None, app_name=None, namespaces=None): self.func = func self.args = args self.kwargs = kwargs self.app_name = app_name if namespaces: self.namespaces = [x for x in namespaces if x] else: self.namespaces = [] if not url_name: if not hasattr(func, '__name__'): # An instance of a callable class url_name = '.'.join([func.__class__.__module__, func.__class__.__name__]) else: # A function url_name = '.'.join([func.__module__, func.__name__]) self.url_name = url_name def namespace(self): return ':'.join(self.namespaces) namespace = property(namespace) def view_name(self): return ':'.join([ x for x in [ self.namespace, self.url_name ] if x ]) view_name = property(view_name) def __getitem__(self, index): return (self.func, self.args, self.kwargs)[index] def __repr__(self): return "ResolverMatch(func=%s, args=%s, kwargs=%s, url_name='%s', app_name='%s', namespace='%s')" % ( self.func, self.args, self.kwargs, self.url_name, self.app_name, self.namespace)
URL 配置处理过程
通过对 URL 模式,URL 分解器,URL 匹配结果的了解,基本上对 URL 配置的处理过程了解大半了。
看看开始处理 URL 配置的代码:
if hasattr(request, "urlconf"): # Reset url resolver with a custom urlconf. urlconf = request.urlconf urlresolvers.set_urlconf(urlconf) resolver = urlresolvers.RegexURLResolver(r'^/', urlconf) callback, callback_args, callback_kwargs = resolver.resolve( request.path_info)
得益于 URL 分解器的层级设计,这几行代码便完成了对 URL 配置的处理过程。
0 0
- [urls.py设置技巧]URLconf处理其三:URL匹配返回结果
- [urls.py设置技巧]URLconf处理其四:URL调度器详解
- [urls.py设置技巧]URLconf处理其五:URL调度过程实例
- [urls.py设置技巧]URLconf处理其一:URL模式
- [urls.py设置技巧]URLconf处理其二:URL分解器
- [urls.py设置技巧]Django是如何处理URLconf的?
- [urls.py设置技巧]urls.py的三种配置写法
- [urls.py设置技巧]Django urls.py的了解与基本配置
- urls.py
- Django中关于URL配置文件urls.py的理解
- Django中关于URL配置文件urls.py的理解
- web.py处理url
- URLConf技巧-django
- Django的URLConf技巧
- Django的URLConf技巧
- Django&views.py&urls.py
- web.py– URL 处理
- 21.2 匹配结果处理
- C#,Dictionary,asp.net 字典 用法及简单操作
- oc 中NSString 、NSMuablestring 方法
- xmlpullparser用法体会
- iOS 上传云端代码
- 汇编语言入门笔记
- [urls.py设置技巧]URLconf处理其三:URL匹配返回结果
- Hadoop Hive sql语法详解
- 基于Angularjs的过滤与排序
- linux 下source、sh、bash、./执行脚本的区别
- .NET中栈和堆的比较 #2
- bzoj1271.秦腾与教学评估
- C++计算中值图像,增量算法
- C++调试时要让窗口一直打开的方法
- 数据库连接池,线程池,C3P0