1

我有一个关于 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 调度,两者的问题都是一样的。

4

1 回答 1

5

你所有的hrefs都应该以一个斜杠开头。

于 2013-01-07T23:40:13.587 回答