零基础也能做网站!Python不用框架做网站实战案例全解析
自己不会代码想做网站,看到别人用Python做网站,觉得挺酷的,但不知道从哪下手,更别说不用框架了。其实,Python本身就自带了做网站的工具,不用框架也能搞定,而且特别适合新手入门。今天我就用一个实战案例,带你从零开始用Python不用框架做网站,一步步实现自己的小项目。
各自定位:Python原生做网站的几个选项
在Python中,虽然有Django、Flask等知名框架,但如果我们不使用框架,也可以用Python自带的模块来构建一个简单的网站。常见的几个方案包括使用http.server模块、SimpleHTTPServer(Python2.7)或者使用WSGI接口结合CGI脚本来实现。这些方法虽然不如框架强大,但对于学习网站开发、测试小功能、或快速搭建一个静态站点,都非常实用。
以下是三种不用框架做网站的常见方案及其定位:
| 方案名称 | 定位与用途 | 适用人群 |
|---|---|---|
http.server |
用于快速测试静态文件,或作为开发服务器 | 新手、测试阶段使用 |
SimpleHTTPServer |
仅限Python2.7,功能与http.server类似 |
已经使用Python2.7的开发者 |
WSGI + CGI |
用于部署动态脚本,支持后端逻辑处理 | 熟悉CGI和WSGI的开发者 |
这些方案各有适用场景,接下来我们会详细对比它们的核心差异、代码写法、适用场景,以及适合哪些人来使用。
核心差异:三大方案对比表格
以下是三种方案的核心对比,从性能、开发难度、功能支持、部署复杂度、适用场景等多个维度进行对比:
| 对比维度 | http.server |
SimpleHTTPServer |
WSGI + CGI |
|---|---|---|---|
| 性能表现 | 低,仅支持静态内容 | 低,仅支持静态内容 | 中等,支持动态脚本 |
| 开发难度 | 极低,几乎零配置 | 极低,仅限Python2.7 | 中等,需要了解CGI/WSGI |
| 功能支持 | 仅支持静态文件 | 仅支持静态文件 | 支持动态脚本、表单处理等 |
| 部署复杂度 | 极低,直接运行即可 | 极低,直接运行即可 | 中等,需配置服务器环境 |
| 适用场景 | 测试、静态页面展示 | 同上,仅限Python2.7 | 动态功能实现、简单交互 |
从对比表格可以看出,如果你只是想做个静态页面展示,http.server或SimpleHTTPServer是最佳选择。如果你需要一点后端逻辑,如处理表单、显示动态内容,那么WSGI + CGI就更适合你。
代码/配置写法对比:实战案例展示
下面我分别用三种方案,写一个简单的“Hello World”网站,并展示如何配置和运行。
方案1:使用 http.server(Python3)
# 示例代码:运行一个简单的HTTP服务器,展示静态文件
import http.server
import socketserverPORT = 8000Handler = http.server.SimpleHTTPRequestHandlerwith socketserver.TCPServer(("", PORT), Handler) as httpd:print(f"Serving on port {PORT}")httpd.serve_forever()
运行这个脚本后,Python会在当前目录下启动一个HTTP服务器,访问 http://localhost:8000 即可看到当前目录下的文件列表。这是最简单的方式,适合展示静态内容或测试。
方案2:使用 SimpleHTTPServer(Python2.7)
# 示例代码:Python2.7中运行一个静态HTTP服务器
import SimpleHTTPServer
import SocketServerPORT = 8000Handler = SimpleHTTPServer.SimpleHTTPRequestHandlerhttpd = SocketServer.TCPServer(("", PORT), Handler)
print "Serving on port", PORT
httpd.serve_forever()
这个脚本与上面的Python3版本几乎相同,但仅适用于Python2.7。目前Python2.7已经不再维护,因此不推荐新手使用。
方案3:使用 WSGI + CGI(动态内容)
# 示例代码:一个简单的CGI脚本,返回动态内容
print("Content-Type: text/html\n")
print("<html><body><h1>Hello, World!</h1></body></html>")
将上述脚本保存为 hello.py,并放在Web服务器的CGI目录下(如 /var/www/cgi-bin)。然后在 httpd.conf 中配置CGI支持:
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">AllowOverride NoneOptions +ExecCGIAddHandler cgi-script .pyRequire all granted
</Directory>
运行后访问 http://yourserver/cgi-bin/hello.py,就能看到动态生成的“Hello, World!”页面。
适用场景:各方案的使用边界
了解了三种方案的差异后,我们再来看看它们各自最适合的应用场景。
1. http.server:静态文件展示 + 测试用
如果你只是想展示一个简单的静态网页,或者在开发过程中测试页面效果,http.server 是最便捷的方式。它不需要任何额外配置,也无需安装第三方库,非常适合初学者入门。
2. SimpleHTTPServer:仅限Python2.7环境的测试
虽然功能与 http.server 一致,但由于Python2.7已经停止维护,建议不要在新项目中使用。如果已有Python2.7环境,可用此方式做简单测试,但不推荐作为正式部署方案。
3. WSGI + CGI:动态脚本 + 简单后端逻辑
如果你需要展示动态内容,比如根据用户输入返回不同信息、处理表单、展示数据库内容等,使用 WSGI + CGI 模式是可行的。虽然部署比框架复杂,但它是学习后端逻辑的绝佳入门方式。
选型建议:不同需求,不同方案
| 需求类型 | 推荐方案 | 原因说明 |
|---|---|---|
| 静态页面展示 | http.server |
快速、零配置、无需代码基础 |
| 动态内容 + 表单处理 | WSGI + CGI |
支持后端逻辑,适合学习和小型项目 |
| 学习后端开发基础 | WSGI + CGI |
能理解HTTP请求、CGI、表单处理等基础 |
| 测试与开发环境 | http.server |
轻量、易用,适合项目初期测试 |
| 无需框架,但需要后端 | WSGI + CGI |
比框架更灵活,适合小项目或实验 |
如果你只是想做个展示页,推荐使用 http.server;如果你有简单后端需求,或想学后端逻辑,推荐使用 WSGI + CGI;如果已经熟悉框架,想尝试不用框架的方式,也可以用 WSGI + CGI 来做实验。
小结与互动钩子
用Python做网站,不一定要用框架,原生模块就能满足基本需求。不管是静态页面展示,还是简单的后端逻辑,都能找到合适的方案。关键是看你的需求和目标。
如果你对网站开发还有一堆疑问,比如:用Python做网站是不是真的能赚钱? 评论区留言,我一一给你解答。