我有一个关于 URL Dispatch 或 Traversal 的初学者问题。我想做的是使用 Mako 渲染器来渲染我的视图。所以我有这个文件夹/includes/,所有的html、css和javascript都在其中。这是我的金字塔主要代码:
from pyramid.config import Configurator
def main(global_config, **settings):
config = Configurator(settings=settings)
config.add_static_view('includes', 'includes', cache_max_age=3600)
config.add_renderer(".html", "pyramid.mako_templating.renderer_factory")
config.add_route('home', '/')
config.scan()
return config.make_wsgi_app()
这些是我的观点:
@view_config(route_name='home', renderer='index.html')
def my_view(request):
return {'name':'Netherdrake'}
@view_config(name = 'login', renderer='login.html')
def login(request):
return {'name':'Netherdrake'}
问题是,当我访问 ip:port/login 时,站点工作正常,但是当我尝试 ip:port/login/ 时,css、javascript 和图像不起作用。原因是,我的绝对路径变得无效。
这是我在没有 / 的情况下登录时的 login.html 片段(实际上是 mako 模板):
<link href="includes/css/twitter/bootstrap.css" rel="stylesheet">
<link href="includes/css/base.css" rel="stylesheet">
<link href="includes/css/twitter/responsive.css" rel="stylesheet">
<link href="includes/css/jquery-ui-1.8.23.custom.css" rel="stylesheet">
<script src="includes/js/plugins/modernizr.custom.32549.js"></script>
在这里,我正在登录/路径(在这种情况下站点已损坏,没有 css、图像、js ......):
<link href="includes/css/twitter/bootstrap.css" rel="stylesheet">
<link href="includes/css/base.css" rel="stylesheet">
<link href="includes/css/twitter/responsive.css" rel="stylesheet">
<link href="includes/css/jquery-ui-1.8.23.custom.css" rel="stylesheet">
<script src="includes/js/plugins/modernizr.custom.32549.js"></script>
login.html 也在 /includes 中。
我该如何解决这个问题,并让它在两条路径下工作,有和没有斜线?我尝试了遍历和 url 调度,两者的问题都是一样的。