Pyramid 静态视图(js、img、css):AttributeError

Posted

技术标签:

【中文标题】Pyramid 静态视图(js、img、css):AttributeError【英文标题】:Pyramid static views (js, img, css): AttributeError 【发布时间】:2015-09-06 15:53:50 【问题描述】:

为了为我的 web 项目提供样式表、图像和 javascript 文件,我在 Pyramid 的 static 文件夹中创建了一些子目录,如下所示:

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

但是,使用 Pyramid 的特定 config.add_xyz_view 方法(如 Pyramid Cookbook 中所述)会为所有这三个命令引发 AttributeErrors,如下所示:

python3.4/site-packages/pyramid/config/init.py",第 793 行,在 getattr 引发 AttributeError(name)

AttributeError: add_images_view

或等效于 css

AttributeError: add_stylesheets_view

对于js

AttributeError: add_javascript_view

目前我正在使用一种解决方法,它似乎很有效(请参阅下面代码中的 cmets)。

由于我是使用 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()

【问题讨论】:

该页面不受 Pyramid 官方支持。它也适用于以前的 Pylons Web 框架用户。不要将其作为学习 Pyramid 的参考。而是使用官方支持的文档和教程,列在docs.pylonsproject.org/projects/pyramid/en/latest/…下具体可以参考快速教程中的步骤13docs.pylonsproject.org/projects/pyramid/en/latest/… 【参考方案1】:

打开new issue on Pyramid's GitHub repo 和Steve Piercy's comment 出现了,Pyramid Cookbook 似乎有一个错误,在我在这里提出问题后立即解决了这个问题。我在 repo 上的问题。

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

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

【讨论】:

以上是关于Pyramid 静态视图(js、img、css):AttributeError的主要内容,如果未能解决你的问题,请参考以下文章

Pyramid 无法访问静态资产(既不是 .jpg 图像也不是 .js 文件)

SpringMVC 静态资源配置 css js img等

在django中访问静态文件(js css img)

python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件

Web.Config 对静态文件 js css img 的客户端缓存策略

jsp页面的调用静态资源(如img,css,js)等资源时路径的写法