用 Python 搭建一个网站有多种路径,2025–2026 年的主流选择已经非常清晰。
目前(2026 年初)最常见的三个起点是:
| 目标 / 场景 | 2025–2026 最推荐框架 | 学习曲线 | 启动速度 | 性能排名 | 典型公司/项目类型 | 推荐指数 (2026) |
|---|---|---|---|---|---|---|
| 传统完整网站(有后台、用户系统、CMS、管理面板) | Django | 中等 | 最快 | 中等 | 电商、管理后台、内容平台、SaaS | ★★★★★ |
| 现代高性能 API + 前后端分离(React/Vue/小程序/H5) | FastAPI | 较低 | 非常快 | 最快 | AI 服务、微服务、移动后端、数据接口 | ★★★★★ |
| 极简原型、个人小站、学习 Web 基础、非常灵活控制 | Flask | 最低 | 快 | 中上 | 小工具、内部服务、教学项目 | ★★★★ |
2026 年快速选型决策树
问自己三个问题(按顺序):
- 你是否需要开箱即用的用户认证、权限、Admin 后台、ORM、表单等一大堆功能?
→ 是 → 选 Django(最省事) - 你的主要目标是构建高性能 RESTful/GraphQL/WebSocket API,并且打算搭配现代前端(React/Vue/Svelte/Next.js 等)?
→ 是 → 选 FastAPI(目前最火、最现代) - 你想自己掌控一切、写最少的 boilerplate 代码、做极简项目/学习 HTTP 原理?
→ 是 → 选 Flask(最自由)
下面给出三种框架从零到能跑起来的最短路径(2026 年最新写法)。
路径一:Django(最适合完整网站)
# 1. 安装(推荐虚拟环境)
python -m venv venv
source venv/bin/activate # Windows 用 venv\Scripts\activate
pip install django
# 2. 创建项目 + 应用
django-admin startproject mysite
cd mysite
python manage.py startapp blog
# 3. settings.py 中注册应用
# mysite/settings.py
INSTALLED_APPS = [
...
'blog.apps.BlogConfig',
]
# 4. 创建超级用户(管理后台用)
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
# 5. 写最简单的模型 + 视图 + 模板(blog/models.py)
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
# blog/views.py
from django.shortcuts import render
from .models import Post
def index(request):
posts = Post.objects.all()
return render(request, 'blog/index.html', {'posts': posts})
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
# blog/urls.py 新建
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# 创建 templates/blog/index.html
<!DOCTYPE html>
<html>
<head><title>我的博客</title></head>
<body>
<h1>最新文章</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% endfor %}
</ul>
</body>
</html>
# 6. 启动
python manage.py runserver
访问 http://127.0.0.1:8000/ 就能看到页面,http://127.0.0.1:8000/admin/ 有管理后台。
路径二:FastAPI(2026 年最推荐的现代 API 后端)
pip install fastapi uvicorn[standard] sqlalchemy pydantic-settings
# main.py
from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy import create_engine, Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Session
from datetime import datetime
from pydantic import BaseModel
import uvicorn
# 数据库(SQLite 示例)
DATABASE_URL = "sqlite:///./blog.db"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
class Post(Base):
__tablename__ = "posts"
id = Column(Integer, primary_key=True, index=True)
title = Column(String, index=True)
content = Column(String)
created_at = Column(DateTime, default=datetime.utcnow)
Base.metadata.create_all(bind=engine)
# Pydantic 模型
class PostCreate(BaseModel):
title: str
content: str
class PostOut(PostCreate):
id: int
created_at: datetime
class Config:
from_attributes = True
app = FastAPI(title="我的博客 API")
# 依赖
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/posts/", response_model=PostOut)
def create_post(post: PostCreate, db: Session = Depends(get_db)):
db_post = Post(**post.model_dump())
db.add(db_post)
db.commit()
db.refresh(db_post)
return db_post
@app.get("/posts/")
def read_posts(db: Session = Depends(get_db)):
return db.query(Post).all()
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
启动:python main.py 或 uvicorn main:app --reload
访问 http://127.0.0.1:8000/docs → 自动 Swagger 文档界面(2026 年最爽的开发体验之一)
路径三:Flask(最简单、最灵活)
pip install flask flask-sqlalchemy
# app.py
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
content = db.Column(db.Text, nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
with app.app_context():
db.create_all()
@app.route('/')
def index():
posts = Post.query.all()
return render_template('index.html', posts=posts)
@app.route('/create', methods=['GET', 'POST'])
def create():
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
post = Post(title=title, content=content)
db.session.add(post)
db.session.commit()
return redirect(url_for('index'))
return render_template('create.html')
if __name__ == '__main__':
app.run(debug=True)
创建 templates/index.html 和 templates/create.html(类似上面 Django 的模板)。
启动:python app.py
总结建议(2026 年视角)
- 第一次写网站 → Flask(最容易理解 HTTP、路由、模板、表单)
- 想快速出完整产品(带登录、权限、后台) → Django
- 主要做 API、前后端分离、微服务、AI 接口、追求性能与现代感 → FastAPI(目前增长最快、社区最活跃)
你目前的目标是哪一种?
- 个人博客 / 展示站?
- 前后端分离的现代 Web App?
- RESTful API 或 AI 服务接口?
- 带管理后台的企业级系统?
告诉我你的具体需求(功能、技术栈偏好、是否要数据库等),我可以给你更精确的下一步代码 + 目录结构 + 部署建议。