Python 带有 CherryPy 和 Mako 模板的服务器 - 浏览器中不显示任何内容
Python Server with CherryPy and Mako Template - Nothing is displayed in the browser
我有这个项目。
目录:
myProject
└── app
├── __init__.py
├── application.py
└── view.py
├── templates
└── template1.mako
├── server.conf
└── server.py
server.py:
# coding: utf-8
import os.path
import cherrypy
import sys
from app import application
def main():
try:
currentDir = os.path.dirname(os.path.abspath(__file__))
except:
currentDir = os.path.dirname(os.path.abspath(sys.executable))
cherrypy.Application.currentDir = currentDir
configFileName = 'server.conf'
if os.path.exists(configFileName) == False:
configFileName = None
cherrypy.engine.autoreload.unsubscribe()
cherrypy.engine.timeout_monitor.unsubscribe()
cherrypy.quickstart(application.Application(), config=configFileName)
if __name__ == '__main__':
main()
server.conf:
[global]
tools.log_headers.on: True
tools.sessions.on: False
tools.encode.on: True
tools.encode.encoding:"utf-8"
server.socket_port: 8080
server.socket_timeout:60
server.thread_pool: 10
server.environment: "production"
log.screen: True
[/]
tools.staticdir.root: cherrypy.Application.currentDir
tools.staticdir.on = True
tools.staticdir.dir = '.'
template1.mako:
## coding: utf-8
<!DOCTYPE html>
<html>
<head>
<title>
Forum
</title>
<meta charset="UTF-8" />
</head>
<body>
<h1>
Forum
</h1>
<form>
Username: <input type="text" name="username"/>
Password: <input type="password" name="password"/>
<br/>
<input type="submit" value="Submit!!!">
</form>
<div>
Discussions
</div>
</body>
</html>
## EOF
application.py:
import cherrypy
from app.view import View
class Application(object):
def __init__(self):
self.myView = View(cherrypy.Application.currentDir)
def index(self):
self.myView.create("template1.mako")
index.exposed = True
view.py:
import os.path
from mako.lookup import TemplateLookup
class View(object):
def __init__(self, path):
self.templatesPath = os.path.join(path, 'templates')
self.myLookup = TemplateLookup(directories=[self.templatesPath])
def create(self, templateName):
myTemplate = self.myLookup.get_template(templateName)
return myTemplate.render()
当我在 cmd.exe 中使用以下命令在 myProject 文件夹中启动服务器时:
python server.py
服务器工作:
ENGINE Listening for SIGTERM.
ENGINE Bus Starting
ENGINE Serving on http://127.0.0.1:8080
ENGINE Bus Started
但是当我在浏览器中转到 localhost:8080 时,没有显示任何内容。只是白色。虽然没有错误。
我很确定 server.py, server.conf and forum.mako
是正确的。
它与 application.py and view.py
文件和导入有关。
我将 view.py 导入 application.py 中:
from app.view import View
然后我使用 application.py 中的视图 class。我没有错误。
我不明白我的项目有什么问题。我在这里坐了 5 个小时,试着理解。
在 application.py
中,您忘记了 return 呈现的模板。
import cherrypy
from app.view import View
class Application(object):
def __init__(self):
self.myView = View(cherrypy.Application.currentDir)
def index(self):
return self.myView.create("template1.mako")
index.exposed = True
索引方法上的return
。
我有这个项目。
目录:
myProject
└── app
├── __init__.py
├── application.py
└── view.py
├── templates
└── template1.mako
├── server.conf
└── server.py
server.py:
# coding: utf-8
import os.path
import cherrypy
import sys
from app import application
def main():
try:
currentDir = os.path.dirname(os.path.abspath(__file__))
except:
currentDir = os.path.dirname(os.path.abspath(sys.executable))
cherrypy.Application.currentDir = currentDir
configFileName = 'server.conf'
if os.path.exists(configFileName) == False:
configFileName = None
cherrypy.engine.autoreload.unsubscribe()
cherrypy.engine.timeout_monitor.unsubscribe()
cherrypy.quickstart(application.Application(), config=configFileName)
if __name__ == '__main__':
main()
server.conf:
[global]
tools.log_headers.on: True
tools.sessions.on: False
tools.encode.on: True
tools.encode.encoding:"utf-8"
server.socket_port: 8080
server.socket_timeout:60
server.thread_pool: 10
server.environment: "production"
log.screen: True
[/]
tools.staticdir.root: cherrypy.Application.currentDir
tools.staticdir.on = True
tools.staticdir.dir = '.'
template1.mako:
## coding: utf-8
<!DOCTYPE html>
<html>
<head>
<title>
Forum
</title>
<meta charset="UTF-8" />
</head>
<body>
<h1>
Forum
</h1>
<form>
Username: <input type="text" name="username"/>
Password: <input type="password" name="password"/>
<br/>
<input type="submit" value="Submit!!!">
</form>
<div>
Discussions
</div>
</body>
</html>
## EOF
application.py:
import cherrypy
from app.view import View
class Application(object):
def __init__(self):
self.myView = View(cherrypy.Application.currentDir)
def index(self):
self.myView.create("template1.mako")
index.exposed = True
view.py:
import os.path
from mako.lookup import TemplateLookup
class View(object):
def __init__(self, path):
self.templatesPath = os.path.join(path, 'templates')
self.myLookup = TemplateLookup(directories=[self.templatesPath])
def create(self, templateName):
myTemplate = self.myLookup.get_template(templateName)
return myTemplate.render()
当我在 cmd.exe 中使用以下命令在 myProject 文件夹中启动服务器时:
python server.py
服务器工作:
ENGINE Listening for SIGTERM.
ENGINE Bus Starting
ENGINE Serving on http://127.0.0.1:8080
ENGINE Bus Started
但是当我在浏览器中转到 localhost:8080 时,没有显示任何内容。只是白色。虽然没有错误。
我很确定 server.py, server.conf and forum.mako
是正确的。
它与 application.py and view.py
文件和导入有关。
我将 view.py 导入 application.py 中:
from app.view import View
然后我使用 application.py 中的视图 class。我没有错误。 我不明白我的项目有什么问题。我在这里坐了 5 个小时,试着理解。
在 application.py
中,您忘记了 return 呈现的模板。
import cherrypy
from app.view import View
class Application(object):
def __init__(self):
self.myView = View(cherrypy.Application.currentDir)
def index(self):
return self.myView.create("template1.mako")
index.exposed = True
索引方法上的return
。