这显然是一个简单的问题,但我似乎无法得到它。在LPTHW Exercise 50我被要求创建一个网页foo.html。我已完成此操作并将其保存在项目框架的模板文件夹中。
当我在浏览器中输入http://localhost:8080
时,它会自动找到index.html页面。其文件路径为Python/projects/gothonweb/templates/index.html
然而,当我尝试通过输入以下任何一个来找到我的foo.html页面时,我无法找到它。其文件路径为Python/projects/gothonweb/templates/foo.html
http://localhost:8080/foo.html
http://localhost:8080/templates/foo.html
http://localhost:8080/gothonweb/templates/foo.html
http://localhost:8080/projects/gothonweb/templates/foo.html
http://localhost:8080/Python/projects/gothonweb/templates/foo.html
这是我第一次在网上使用python,非常感谢任何帮助
答案 0 :(得分:2)
您需要创建一个指向foo.html
文件的路线。从LPTHW练习50开始,以下是bin/app.py
中的相关代码:
import web
urls = (
'/', 'Index'
)
app = web.application(urls, globals())
render = web.template.render('templates/')
class Index(object):
def GET(self):
greeting = "Hello World"
return render.index(greeting = greeting)
if __name__ == "__main__":
app.run()
注意几件事:
urls
变量只有/
路径的路线。Index
课程中,您正在致电render.index
因此,您可以做的一件事就是在练习的 Study Drills 部分之前建议,只需将render.index
调用更改为render.foo
即可。使用Web框架时,这将在您加载索引路径时呈现foo.html
文件。
您可以做的另一件事是向urls
添加另一条路线并创建class Foo
以捕捉此路线:
import web
urls = (
'/', 'Index',
'/foo', 'Foo'
)
app = web.application(urls, globals())
render = web.template.render('templates/')
class Index(object):
def GET(self):
greeting = "Hello World"
return render.index(greeting = greeting)
class Foo(object):
def GET(self):
return render.foo()
if __name__ == "__main__":
app.run()
现在,当您转到http://localhost:8080/foo
时,它将呈现您的foo.html
模板。
答案 1 :(得分:1)
您正在此处构建Web服务,而不是静态网站。您的.html
文件是用于构建动态页面的模板,而不是用于提供服务的静态页面。因此,如果web.py
允许您自动访问foo.html
,那就太糟糕了。
如果查看日志输出,它实际上并没有为GET
处理/index.html
,而是使用{{1}处理GET
到/
}。
无论如何,所做的提供的内容完全由您在templates/index.html
中编写的代码驱动,并且您告诉它在此处提供什么:
app.py
这说明urls = (
'/', 'index'
)
的请求应该由/
类的实例处理。该课程如下:
index
换句话说,它不会“自动定位index.html页面”,它会自动定位render = web.template.render('templates/')
class index:
def GET(self):
greeting = "Hello World"
return render.index(greeting=greeting)
类,该类使用明确指向index
的渲染器(通过index.html
位。
练习明确地解释了所有这些,然后要求你:
还要创建另一个名为templates / foo.html的模板,并使用render.foo()而不是像之前那样使用render.index()进行渲染。
所以,这就是你必须要做的。您必须使用render.index
进行渲染。
最简单的方法是:
render.foo()
有更灵活的方法可以做,但是当你浏览web.py教程时,你将学习它们。 (在继续练习之前,练习还要求你做。)