[英]Python renders wrong page using web.py
我正在尝试自学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中,但我没有知道为什么。
当我从网址中删除第二个条目并从controller.py中删除regnsterclick类时,MainLayout.html页面已加载,并且似乎没有任何东西加载到$:page中。
有什么想法可以显示register.html的内容吗? 任何帮助是极大的赞赏。
谢谢。
通过用花括号定义urls
,您将其set
为set
,该set
是无序的。 您需要将urls
定义为tuple
,可以使用括号来完成。
这个答案很好地解释了: https : //stackoverflow.com/a/46633252/2150542
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.