好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于aiohttp之添加静态资源路径方法

所谓静态资源,是指图片、js、css等文件。官方的说明在这里。
以一个小项目来说明,下面是项目的目录结构:

.
├── static
│   ├── css
│   │   ├── base.css
│   │   ├── bootstrap.min.css
│   │   └── font-awesome.min.css
│   ├── font
│   │   ├── FontAwesome.otf
│   │   ├── fontawesome-webfont.eot
│   │   ├── fontawesome-webfont.svg
│   │   ├── fontawesome-webfont.ttf
│   │   └── fontawesome-webfont.woff
│   └── index.html
└── proxy_server.py 

在 proxy_server.py 给2个静态文件目录 static/css 和 static/font 添加路由:

 app.router.add_static('/css/',
                       path='static/css',
                       name='css')
 app.router.add_static('/font/',
                       path='static/font',
                       name='font') 

先来看看 add_static 方法的定义:

def add_static(self, prefix, path, *, name=None, expect_handler=None,
                   chunk_size=256*1024, response_factory=StreamResponse,
                   show_index=False, follow_symlinks=False):
        """Add static files view.

        prefix - url prefix
        path - folder with files

        """
        # TODO: implement via PrefixedResource, not ResourceAdapter
        assert prefix.startswith('/')
        if prefix.endswith('/'):
            prefix = prefix[:-1]
        resource = StaticResource(prefix, path,
                                  name=name,
                                  expect_handler=expect_handler,
                                  chunk_size=chunk_size,
                                  response_factory=response_factory,
                                  show_index=show_index,
                                  follow_symlinks=follow_symlinks)
        self.register_resource(resource)
        return resource 

必需的2个参数:
prefix :是静态文件的 url 的前缀,以 / 开始,在浏览器地址栏上显示在网站host之后,也用于 index.html 静态页面进行引用
path :静态文件目录的路径,可以是相对路径,上面代码使用的 static/css 就是相对路径——相对于 proxy_server.py 所在路径。
下面是页面的效果:

加载的是 index.html ,下面是它引用静态资源的代码:

<!-- Bootstrap CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">

<!-- Base CSS -->
<link href="css/base.css" rel="stylesheet">

<!-- FA CSS -->
<link href="css/font-awesome.min.css" rel="stylesheet"> 

添加 font 的路径是因为 /font-awesome.min.css 需要使用:

在浏览器中打开css文件:

可以看到是url的前缀是 /css/ 。
如果修改前缀:

 app.router.add_static('/css2017/',
                       path='static/css',
                       name='css') 

页面变成了:

css文件也无法访问了:

修改 index.html 中的css的引用路径:

<!-- Bootstrap CSS -->
<link href="css2017/bootstrap.min.css" rel="stylesheet">

<!-- Base CSS -->
<link href="css2017/base.css" rel="stylesheet">

<!-- FA CSS -->
<link href="css2017/font-awesome.min.css" rel="stylesheet"> 

虽然目录本身还是 css ,但通过 add_static 已经将它视为了 css2017 ,页面回复正常了:

css文件也可以打开了:

url前缀变成了 /css2017/ 了。
此时直接打开 index.html 文件就会显示为

因为 static 目录下并没有 css2017 这个文件夹。

至此就了解了 add_static 的基本使用方法了,可以通过重新定义 prefix 参数还可以隐藏服务器上真实的存放静态资源的目录,也可以将分散在各处的资源文件统一到同一个路径前缀下。

此外,如果加上 show_index=True ,就可以显示静态资源的目录索引了——默认是禁止访问的:

app.router.add_static('/css2017/',
                       path='static/css',
                       name='css',
                       show_index=True) 

以上就是关于aiohttp之添加静态资源路径方法的详细内容,更多请关注Gxl网其它相关文章!

查看更多关于关于aiohttp之添加静态资源路径方法的详细内容...

  阅读:35次