当前位置: 首页 > news >正文

平面设计可以做网站?/品牌咨询

平面设计可以做网站?,品牌咨询,汉中北京网站建设,做网站和制作网页的区别这个标题真是含糊,因为琢磨了很久都不知道该怎么描述,不过看了下面的说明,就明白到底在说什么了。在使用 Tornado 中,必须将 url-handler 元组组成的列表传给 Application 以便实例化,其中 url-handler 如下面所示: 1 …

这个标题真是含糊,因为琢磨了很久都不知道该怎么描述,不过看了下面的说明,就明白到底在说什么了。在使用 Tornado 中,必须将 url-handler 元组组成的列表传给 Application 以便实例化,其中 url-handler 如下面所示:

1
2
3
4
5
[('/', HomeHandler),('/([a-zA-Z0-9-]+)/*', EntryHandler),('/picky/([a-zA-Z0-9-]+)/*', PickyHandler),
]

不过在 Django 中,也是使用类似的方法来建立url到相应处理方法的对应,不过 Django 中是这样来做的:

1
2
3
4
urlpatterns = patterns('',url(r'^$', 'mysite.views.bar'),url(r'^mysite/', 'mysite.views.foo'),
)

唯一的区别是 Django 使用的对应处理方法用的是字符串,这样明显的好处就是不用在 urls.py 文件中繁琐的导入需要的模块了,比如上面 Tornado 的例子中,如果在独立的文件中设置映射,就必须像下面这样:

1
2
3
from blog import HomeHandler, EntryHandler, PickyHandler#上面的映射列表

毫无疑问,这样不是一点麻烦,那么 Tornado 能否像 Django 那样呢,当然可以,在 Tornado 的源代码中找到了答案,代码见这里。它判定 handler 是字符类型,则使用 import_object 函数来通过字符串调用相应的模块,不过需要注意的是,模块需要从项目的根开始,最上面的那个例子属于 blog 这个包下,于是可以这样改写:

1
2
3
4
5
[('/', 'blog.HomeHandler'),('/([a-zA-Z0-9-]+)/*', 'blog.EntryHandler'),('/picky/([a-zA-Z0-9-]+)/*', 'blog.PickyHandler'),
]

这样就不用去显示的导入那些该死的模块,瞬间觉得轻松多了。

浅析 Python 字符串形式的模块导入

现在把焦点集中在 import_object 函数上,该函数是这样定义的:

1
2
3
4
def import_object(name):parts = name.split('.')obj = __import__('.'.join(parts[:-1]), None, None, [parts[-1]], 0)return getattr(obj, parts[-1])

其中用到了 __import__ 这个内建函数,主要用来根据字符串导入模块,最大的好处就像上面的那个示例一样,可以使程序在运行时动态加载一些模块,而不是在py文件的开头使用 import 来加载。下面通过几个例子来简单的说明一下这个函数的用法,在 Python 中导入模块有下面这样的形式:

1
2
3
4
5
import pkg
import pkg.foo
from pkg import foo, bar
from pkg.foo import func
from pkg.foo import submod

在第一和第二种上,import导入将使用最左边的模块名来作为使用导入模块的本地名称,也就是说如果要使用 foofunc 函数必须这样写 pkg.foo.func();如果使用的是第三种,则可以直接使用 foo.func() 。如果使用 __import__ 函数来导入,第一、二种形式是一样的,只需要这样:

1
2
pkg = __import__('pkg')
pkg = __import__('pkg.foo')

由于 __import__ 只会返回一个类型,所以在第三种情况下,需要使用一个临时变量:

1
2
3
tmp = __import__('pkg')
foo = tmp.foo
bar = tmp.bar

不过貌似这样就和我们的初衷不一样了,我们只是想导入 foo|bar 两个子模块,那就需要像下面这样,使用 __import__ 的参数 fromlist

1
2
3
tmp = __import__('pkg', fromlist=['foo', 'bar'])
mod = tmp.foo
mod2 = tmp.bar

最后一种就比较简单了,就如上面一样,不过我们可以不使用临时变量,使用 getattr 就行了:

1
submod = getattr(__import__('pkg.foo', fromlist=['submod']), 'submod')

嗯,就这样。

转载:http://serholiu.com/tornado-url-handler-string

http://www.jmfq.cn/news/5010355.html

相关文章:

  • 空投注册送币网站怎么做/百度搜索榜
  • 天津做网站找哪家公司/百度资源共享链接分享组
  • wordpress站点网站地图/网络舆情分析报告范文
  • 做ppt素材的网站有哪些/关键词优化网站排名
  • 代理公司注册后果严重/seo外链平台
  • 网站开发说明书模板/seo优
  • 济南cms建站/佛山网站优化
  • 微信网站应用开发/seo培训课程
  • 网站建设中 模版/南宁网站建设优化服务
  • 苏州哪里做网站好/友情链接名词解释
  • 免费个人网站搭建/网站分析报告范文
  • 网站支付模块/互联网广告销售
  • python数据分析做网站/关键词优化话术
  • 上海 有哪些做网站的公司/网站开发技术有哪些
  • 网站建设和维护待遇怎样/免费发帖推广平台
  • 微商城网站建设咨询/网络营销具有哪些优势和吸引力
  • 后台网站模板下载/旺道seo软件
  • 目前做系统比较好的网站/西安分类信息seo公司
  • 整站seo需要多少钱/站长工具seo查询软件
  • php网站开发实战视频教程/公众号开发
  • 采集网站后台客户数据/免费站推广网站在线
  • 专题网站建设策划/域名查询大全
  • 成都网页开发/杭州seo排名优化
  • 想学销售去哪培训/整站优化网站
  • 网站图片轮播怎么弄/如何在百度发布信息
  • 养生网站建设论文/石家庄seo网站管理
  • 江门企业建站程序/西地那非片说明书
  • 小程序发朋友圈的方法/南京seo排名优化
  • 品牌建设的核心/长沙网站优化方案
  • 单位网站建设存在问题情况汇报/搜索引擎排名优化是什么意思