You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3运行http.server服务时浏览器不渲染HTML仅显示源码

问题原因

你直接在终端运行脚本时,是手动触发Python解释器执行代码,所以能正常打印渲染后的HTML。但python3 -m http.server默认启动的是纯静态文件服务器,没有执行服务端脚本的能力,收到任意文件请求时只会直接读取文件源码返回给浏览器,不会运行你的Python代码,自然也不会渲染Jinja2模板。

解决步骤

按以下配置调整即可正常运行:

  • 调整项目目录结构,将可执行的Python脚本放到cgi-bin目录下,这是HTTP服务识别CGI脚本的默认目录,调整后结构如下:
    项目根目录/
    ├── cgi-bin/
    │   └── home.py  # 你的脚本文件
    └── templates/
        └── home.html  # Jinja2模板文件
    
  • 给脚本添加可执行权限,Linux/macOS系统在项目根目录执行以下命令:
    chmod +x cgi-bin/home.py
    
    Windows系统无需执行该步骤,确认.py后缀文件默认关联Python 3解释器即可。
  • 启动服务时添加--cgi参数,开启CGI脚本执行能力,启动命令为:
    python3 -m http.server 8000 --cgi
    
  • 访问时不要直接请求根路径下的py文件,要访问CGI脚本路径:http://localhost:8000/cgi-bin/home.py,此时服务会自动执行home.py脚本,返回渲染完成的HTML内容。
注意事项
  • 你现有脚本中print('Content-type: text/html\n')的写法是符合CGI规范的:print语句会自动追加一个换行,加上字符串里自带的换行,刚好会在响应头和响应正文之间输出要求的空行,这部分无需修改。
  • 启动http.server服务时的工作目录必须是项目根目录,否则脚本里的相对路径templates会找不到对应模板文件。
  • 如果你需要更灵活的路由、模板渲染能力,后续可以换用Flask、FastAPI这类轻量Web框架,不需要手动处理CGI相关配置,开发效率更高。

问题现象截图

内容的提问来源于stack exchange,提问作者CuriousDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:21:33