廖雪峰Python教程实战Day 2 - 编写Web App骨架,运行后不显示网页如何解决

教程代码如下:

python 复制代码
import logging; logging.basicConfig(level=logging.INFO)

import asyncio, os, json, time
from datetime import datetime

from aiohttp import web

def index(request):
    return web.Response(body=b'<h1>Awesome</h1>')

@asyncio.coroutine
def init(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/', index)
    srv = yield from loop.create_server(app.make_handler(), '127.0.0.1', 9000)
    logging.info('server started at http://127.0.0.1:9000...')
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

正常运行完该py代码,打开浏览器输入http://127.0.0.1:9000应该显示网页。

但是我运行完一直触发浏览器下载文件的行为,而不是展示html网页,所下载的文件内容为------ <h1>Awesome</h1>

原因在于index 函数返回的是一个 web.Response 对象,其中 body 设置为包含 <h1>Awesome</h1> 的字节字符串。这种情况下,浏览器将该响应识别为下载文件而不是渲染页面。

解决方法 :将返回的内容的content-Type 设置为 text/html,以明确告诉浏览器返回的是 HTML 内容。修改 index 函数如下:

python 复制代码
def index(request):
    return web.Response(body=b'<h1>Awesome</h1>', content_type='text/html')

修改完之后运行,打开浏览器输入http://127.0.0.1:9000成功显示!

目前先这样设置content_type的值,后面如果出bug了再改~

相关推荐
baidu_340998825 分钟前
golang如何集成Keycloak身份认证_golang Keycloak身份认证集成技巧
jvm·数据库·python
abc123456sdggfd5 分钟前
为什么宝塔面板安装phpMyAdmin后打不开_检查PHP版本绑定与888端口是否放行
jvm·数据库·python
qq_413847406 分钟前
SQL利用子查询实现复杂条件排序_嵌套逻辑实现业务规则
jvm·数据库·python
2201_761040598 分钟前
Redis如何应对缓存服务器网络分区带来的雪崩
jvm·数据库·python
2401_8359568111 分钟前
如何实现SQL存储过程动态排序_配合参数过滤与排序逻辑
jvm·数据库·python
dragen_light12 分钟前
1.ROS2-Install
c++·python·ros
m0_6765443814 分钟前
JavaScript中enumerable属性对对象遍历的影响
jvm·数据库·python
Absurd58714 分钟前
SQL如何用SQL子查询实现关联报表生成_嵌套逻辑关联多表
jvm·数据库·python
m0_5145205715 分钟前
CSS如何解决Less与CSS兼容性问题_通过配置文件实现平滑过渡与混合开发
jvm·数据库·python
HHHHH1010HHHHH22 分钟前
JavaScript中利用IIFE创建私有命名空间的经典方案
jvm·数据库·python