金字塔静态视图(js,img,css):AttributeError

时间:2015-09-06 15:53:50

标签: python view pyramid static-files

要为我的webproject提供样式表,图片和JavaScript文件,我创建了一些子目录到Pyramid' static文件夹,如下所示:

myproject/static/
├── css
│   └── overwrite.css
├── img
├── js
├── pyramid-16x16.png
├── pyramid.png
├── theme.css
└── theme.min.css

然而,使用Pyramid的Pyramid Cookbook中所述的特定config.add_xyz_view方法会为所有这三个命令引发AttributeErrors

  

python3.4 / site-packages / pyramid / config / init .py",第793行,在   的 GETATTR           引发AttributeError(名称)

     

AttributeError:add_images_view

或等同于css

  

AttributeError:add_stylesheets_view

和js

  

AttributeError:add_javascript_view

目前我正在使用一种解决方法,它看起来像一个魅力(请参阅下面的代码中的注释)。

由于我是使用Pyramid的初学者,因此使用此解决方法似乎是可以接受的。但是,我想了解这些错误的原因是什么。

项目的__init__.py如下所示:

from pyramid.config import Configurator


def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application."""
    config = Configurator(settings=settings)
    config.include('pyramid_chameleon')
    config.include('pyramid_jinja2')


    config.add_static_view('static', 'static', cache_max_age=3600)

    # raises AttributeError
    # config.add_images_view('img', 'static/img')
    # config.add_stylesheets_view('css', 'static/css')
    # config.add_javascript_view('js', 'static/js')

    # current workaround, works like a charm
    config.add_static_view('img', 'static/img', cache_max_age=3600)
    config.add_static_view('css', 'static/css', cache_max_age=3600)
    config.add_static_view('js', 'static/js', cache_max_age=3600)

    config.add_route('home', '/')
    config.add_route('foo', '/greet')
    config.add_route('bs', '/bs')

    config.scan()
    return config.make_wsgi_app()

1 个答案:

答案 0 :(得分:1)

打开new issue on Pyramid's GitHub repoSteve Piercy's comment时,Pyramid Cookbook似乎出现了错误,我的问题在SO resp后立即修复。我在回购的问题。

所以正确的做法就像“解决方法”一样。在我的问题中给出:

config.add_static_view('img', 'static/img')
config.add_static_view('css', 'static/css')
config.add_static_view('js', 'static/js')