开发者社区> 科技小能手> 正文

python之通过“反射”实现不同的url指向不同函数进行处理(反射应用一)

简介:
+关注继续查看

1、简单概括

下面定义了三个不同的模块用于测试,account.py 模块里有login()和logout(),admin.py模块里有index()。在这里模拟一个url的访问,意思是通过访问不同的url来指向到不同的模块里的函数进行处理,也可以说是处理这个url请求。那么这个就是通过“反射”机制来实现的。

拓展一下,现在几乎所有的语言(不管是php,python,java,.net)的web框架都是通过“反射”机制的方式来根据URL的不同来指向到不同函数里边的不同的方法来执行。


2、account.py 模块

1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:19:03 2016
 
@author: toby
"""
 
def login():
    print 'login'
     
def logout():
    print 'logout'

3、admin.py 模块

1
2
3
4
5
6
7
8
9
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:19:23 2016
 
@author: toby
"""
 
def index():
    print '欢迎登录管理后台'

4、index-test.py 模块

1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 13 23:20:27 2016
 
@author: toby
"""
 
data = raw_input('请输入地址:')
 
array = data.split('/')    #url规则,通过“/”来进行分割,分割后则索引0的值是模块,索引1的值是函数名
userspance = __import__(array[0])    #这里导入模块,模块位于分割后的索引0位置
func = getattr(userspance,array[1]) #这里通过getattr来实现反射,索引1的位置为函数
func()    #执行反射后的函数


5、下面是测试结果

toby@toby-virtual-machine:~/workspace/pydev/main$ python index-test.py 
请输入地址:account/login
login
toby@toby-virtual-machine:~/workspace/pydev/main$ python index-test.py 
请输入地址:admin/index    #admin是模块,index是该模块里的一个函数 (这里模拟一个url,也可以想象成 http://192.168.1.100/admin/index)

欢迎登录管理后台    #这个输出就是index()函数里的一个动作
toby@toby-virtual-machine:~/workspace/pydev/main$ 



本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1872650


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PHP:对称加密及url加密应用
PHP:对称加密及url加密应用
109 0
Fiori应用里application dependency里奇怪的manifest url是从哪来的
Fiori应用里application dependency里奇怪的manifest url是从哪来的
34 0
Fiori应用里application dependency里奇怪的manifest url是从哪来的
Fiori应用里application dependency里奇怪的manifest url是从哪来的
33 0
PHP:对称加密及url加密应用
PHP:对称加密及url加密应用
140 0
SAP UI5应用访问OData metadata的url和Destination
SAP UI5应用访问OData metadata的url和Destination
62 0
SAP CRM Fiori应用里取top20的service url的determine逻辑
Created by Wang, Jerry, last modified on Aug 14, 2015
54 0
获取iOS应用的URL Schemes
获取iOS应用的URL Schemes
194 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载