廖雪峰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了再改~

相关推荐
进击的小头3 分钟前
第8篇:PI控制器设计实战演练
c语言·python·mcu·算法
带娃的IT创业者17 分钟前
Python 异步编程完全指南(二):深入 asyncio 核心概念
开发语言·python·协程·事件循环·asyncio·异步编程
小付爱coding24 分钟前
openclaw源码架构深度解析【总体概况】
python·架构·openclaw
又是忙碌的一天28 分钟前
Java 面向对象三大特性:封装、继承、多态深度解析
java·前端·python
qq_3806513341 分钟前
xu#True
python
DeepModel43 分钟前
【概率分布】均匀分布的原理、推导与Python实现
python·算法·概率论
wmfglpz881 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
zzb15801 小时前
Agent学习-Reflection框架
java·人工智能·python·学习·ai
2301_764441331 小时前
使用python实现脉冲神经网络,用于分类任务
python·神经网络·分类
qyzm1 小时前
AtCoder Beginner Contest 449
数据结构·python·算法·贪心算法