|
环境搭建成功后,一开始就使用别人的框架,不太理解框架的流程,下面搭建一个自己的WEB项目。
apache 已经是一个web服务器了,我们主要工作是响应浏览器,反馈出我们需要的东西。
1.main.py中我们能够得到浏览器输入地址后的得到的内容。
{'mod_wsgi.listener_port': '80', 'mod_wsgi.listener_host': '', 'CONTEXT_DOCUMENT_ROOT': '/var/www/html', 'SERVER_SOFTWARE': 'Apache/2.4.34 (Ubuntu)', 'SCRIPT_NAME': '/main', 'mod_wsgi.enable_sendfile': '0', 'mod_wsgi.handler_script': '', 'SERVER_SIGNATURE': '<address>Apache/2.4.34 (Ubuntu) Server at
127.0.0.1 Port 80</address>\n', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/', 'SERVER_PROTOCOL': 'HTTP/1.1', 'QUERY_STRING': '', 'wsgi.errors': <mod_wsgi.Log object at 0x7f0ff3d00670>, 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0', 'HTTP_CONNECTION': 'keep-alive', 'SERVER_NAME': '127.0.0.1', 'REMOTE_ADDR': '127.0.0.1', 'mod_wsgi.request_handler': 'wsgi-script', 'apache.version': (2, 4, 33), 'wsgi.url_scheme': 'http', 'PATH_TRANSLATED': '/var/www/html/index.html', 'SERVER_PORT': '80', 'mod_wsgi.thread_id': 1, 'wsgi.multiprocess': True, 'SERVER_ADDR': '127.0.0.1', 'DOCUMENT_ROOT': '/var/www/html', 'mod_wsgi.process_group': '', 'mod_wsgi.thread_requests': 0L, 'mod_wsgi.total_requests': 0L, 'mod_wsgi.request_id': 'luudC6JAG/Q', 'SCRIPT_FILENAME': '/var/www/html/main.py', 'SERVER_ADMIN': 'webmaster@localhost', 'mod_wsgi.ignore_activity': '0', 'wsgi.input': <mod_wsgi.Input object at 0x7f0ff3d58880>, 'HTTP_HOST': '127.0.0.1', 'CONTEXT_PREFIX': '', 'mod_wsgi.callable_object': 'application', 'wsgi.multithread': True, 'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 'REQUEST_URI': '/main/', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'mod_wsgi.path_info': '/', 'wsgi.file_wrapper': <type 'mod_wsgi.FileWrapper'>, 'wsgi.version': (1, 0), 'GATEWAY_INTERFACE': 'CGI/1.1', 'wsgi.run_once': False, 'mod_wsgi.script_name': '/main', 'REMOTE_PORT': '38630', 'HTTP_ACCEPT_LANGUAGE': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'REQUEST_SCHEME': 'http', 'mod_wsgi.version': (4, 5, 17), 'mod_wsgi.script_start': '1553309477249490', 'mod_wsgi.application_group': '127.0.1.1|/main', 'mod_wsgi.script_reloading': '1', 'mod_wsgi.request_start': '1553309477235606', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate'} -----------------
2.控制访问的网址,就必须对输入网址内容进行解析。
现我们解析env['PATH_INFO']
我们约定网址结构http://120.0.0.1/main.do?valuename=value
地址中 main.do 理解为需要加载main类,do为调用main类中的方法。
valuename=vaule 需要输入的变量名和变量值。
def application(environ,start_resp**e):
status = '200 OK'
output = 'Hello World!'+str(environ)
out = outclass(environ)
output = out.echo()
resp**e_headers = [('Content-type', 'text/plain')]
start_resp**e(status, resp**e_headers)
return [output]
class outclass:
def __init__(self, environ):
self.env = environ
#self.mehtod=self.env['REQUEST_METHOD']
self.path=self.env['PATH_INFO']
def echo (self):
#import mytest
url=self.load()
out = self.load_to_do(url[0],url[1],a=1,b=2)
#out ='bbbb' #str(index.index(abc=1,dd=2).main())
return out
def load(self):
str=self.path[1:]
my_data = str.split('/')
my_class=my_data[0].split('.')
return my_class
def load_to_do(self,my_file_py, todo='main', **kw):
import importlib
try:
_load_class = importlib.import_module('modle.'+my_file_py)
except ImportError,x:
st=str(x)
return 'load ' + my_file_py + '.py unsuccess!'+st
else:
_in_class = getattr(_load_class, my_file_py)
_do = _in_class(**kw)
try:
_doit = getattr(_do, todo)
except AttributeError:
return 'in [' + my_file_py + ']not find [' + todo + '] function'
else:
return _doit()
在当前目录下建立了modle目录,并建index.py
class index:
def __init__(self,**kw):
self.getdata=kw
def main(self):
abc=str(self.getdata)
return abc
在浏览器中就是报类不能加载“No module named modle.index”,即:在引入其他类时 执行: _load_class = importlib.import_module('modle.'+my_file_py)总会出错,在编辑器中调试输出正常,不知为什么??有高手吗????我是新手,请多指教!
|
|