【发布时间】:2017-11-27 22:49:11
【问题描述】:
我正在尝试自学 Python。我的 controller.py 文件中有以下代码:
import web
urls = {
'/', 'home',
'/register', 'registerclick'
}
render = web.template.render("views/templates", base="MainLayout")
app = web.application(urls, globals())
# Classes/Routes
class home:
def GET(self):
return render.home()
class registerclick:
def GET(self):
return render.register()
if __name__ == "__main__":
app.run()
这是我的 MainLayout.html 中的代码:
$def with (page)
$var css: static/css/bootstrap.css
$var js1: static/js/jquery-3.1.0.min.js static/js/bootstrap.js static/js/material.min.js static/js/ripple.min.js static/js/scripty.js
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CodeWizard</title>
$if self.css:
$for style in self.css.split():
<link rel="stylesheet" href="$style" />
</head>
<body>
<div id="app">
<div class="navbar navbar-info navbar-fixed-top">
<div class="navbar-header">
<a class="navbar-brand">CodeWizard</a>
</div>
<ul class="nav navbar-nav">
<li>
<a class="waves-effect" href="/">Home Feed<div class="ripple-container"></div></a>
</li>
<li>
<a href="/discover">Discover<div class="ripple-container"></div></a>
</li>
<li>
<a href="/profile">Profile<div class="ripple-container"></div></a>
</li>
<li>
<a href="/settings">Settings<div class="ripple-container"></div></a>
</li>
</ul>
<div class="pull-right">
<a href="/register" class="btn btn-raised btn-default waves-effect">Register</a>
</div>
</div>
<br /><br />
$:page
</div>
$if self.js1:
$for script in self.js1.split():
<script src="$script"></script>
</body>
</html>
我有 2 个附加文件(home.html 和 register.html),并且我有可用的引导程序(尽管这与我的问题无关)。
当我启动应用程序并打开浏览器并输入 localhost:8080 作为 url 时,MainLayout.html 被加载到浏览器中(这是我所期望的),但 register.html 的内容被加载到 $:page 中,我不知道为什么。
当我从 urls 中删除第二个条目并从 controller.py 中删除 regnsterclick 类时,MainLayout.html 页面已加载,但似乎没有任何内容加载到 $:page 中。
任何想法为什么会显示 register.html 的内容?非常感谢任何帮助。
谢谢。
【问题讨论】:
-
当您使用 localhost:8080 打开浏览器时,您应该会看到一个错误,因为您没有为该 URL 定义任何内容。也许您的网络服务器的“旧”版本仍在 8080 上运行?您描述的症状与您的代码不符。