问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

深夜求助,关于 aiohttp 搭建 web server 的几个问题

发布网友 发布时间:2022-05-10 09:19

我来回答

2个回答

懂视网 时间:2022-05-10 13:40

所谓静态资源,是指图片、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/cssstatic/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所在路径。
下面是页面的效果:
关于aiohttp之添加静态资源路径方法
加载的是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需要使用:
关于aiohttp之添加静态资源路径方法
在浏览器中打开css文件:
关于aiohttp之添加静态资源路径方法
可以看到是url的前缀是/css/
如果修改前缀:

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

页面变成了:
关于aiohttp之添加静态资源路径方法
css文件也无法访问了:
关于aiohttp之添加静态资源路径方法
修改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,页面回复正常了:
关于aiohttp之添加静态资源路径方法
css文件也可以打开了:
关于aiohttp之添加静态资源路径方法
url前缀变成了/css2017/了。
此时直接打开index.html文件就会显示为
关于aiohttp之添加静态资源路径方法
因为static目录下并没有css2017这个文件夹。

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

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

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

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

热心网友 时间:2022-05-10 10:48

您好,很高兴能帮助您
具体点。什么系统。静态还是动态网站 2000server 2003server 2008server都一样 第一步需要用到IIS,如果要支持php的还要装phpnow这样的套件,jsp的网站

你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,
-
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
二年级作文青山210个字 天命奇御祝贺爆竹支线任务怎么过_爆竹任务玩法攻略 爆竹皇后剧情 爆竹皇后幕后花絮 如何计算止水钢板 止水钢板如何计算 贵港有没有卧铺车到南京 乾隆,雍正,康熙3个皇帝那个当的好那个差怎么评价? 康熙、雍正。乾隆。在位时都有什么事件?? ...康熙雍正乾隆各自的生平及他们在位时发生的重大历史事件。_百度知 ... 厕的拼音 电脑音频未运行怎么办 dns的用途是什么 m7615dna激光多功能一体机怎样安装 南方的柚子属于哪一类. 有没有类似天官赐福的小说哇? 求类似墨香铜臭《天官赐福》里男主的朋友都很有趣的小说,只要呆一起就各种无厘头搞笑的那种风格。 求和魔道祖师 天官赐福情节一样好的小说,玄幻、仙侠、冒险的 求文,类似《天官赐福》的文,痴情攻×仙风道骨受,忠犬攻一类的,有文包最好,剧情一定要饱满不无厘头 能不能推荐一些好看的小说,比如《窗边的小豆豆》,《笑猫日记》?不要巜斗罗*》,《天官赐福》之类的 有没有类似天官赐福里的花城这样的男主的小说,真的爱的铺天盖地,无孔不入啊 端午的鸭蛋。 端午的鸭蛋作者家乡的端午节有哪些风俗 端午节,为啥要吃鸭蛋!? 宽腿裤经过这样一改秒变社会小脚裤,你们都学会了吗 端午的鸭蛋导入语从习俗方面 端午节关于咸鸭蛋的经典诗句 端午节吃咸鸭蛋的习俗是乍来的? 端午节有些什么习俗?为什么有人说吃鸭蛋呢? 木质鞋跟怎么清理? 厕字五笔怎么打 厕是平舌音还是翘舌音? 厕字是几画 厕五笔怎么打 厕的五笔怎么打 洁厕液的拼音 如厕拼音是读ruce还是rusi 吃完鱼胶可以喝啤酒吃花生吗 花生能和灵芝花胶一起煲汤吗? 雪鱼胶猪尾和莲藕,黑豆,花生一起煲汤可以吗? 猪尾煲花胶花生汤孕妇可以喝吗 猪肚花胶煲鸡可以放花生米吗 花胶花生次实鸡子煲汤可以吗? 我在软件一点资讯APP里提现16块钱到支付宝,为什么审核不通过?提现不了啊! 一点资讯号求帮忙,自己想开个提现,谁能提供一下自己的后台截图 一点资讯已被封禁怎么办?谢谢 一点资讯打不开怎么办? 一点资讯客服电话是多少 一点资讯和一点号是一个平台吗 怎么在淘宝首页看不到密令红包活动