如何用Python搭建一个网站

用 Python 搭建一个网站有多种路径,2025–2026 年的主流选择已经非常清晰。

目前(2026 年初)最常见的三个起点是:

目标 / 场景2025–2026 最推荐框架学习曲线启动速度性能排名典型公司/项目类型推荐指数 (2026)
传统完整网站(有后台、用户系统、CMS、管理面板)Django中等最快中等电商、管理后台、内容平台、SaaS★★★★★
现代高性能 API + 前后端分离(React/Vue/小程序/H5)FastAPI较低非常快最快AI 服务、微服务、移动后端、数据接口★★★★★
极简原型、个人小站、学习 Web 基础、非常灵活控制Flask最低中上小工具、内部服务、教学项目★★★★

2026 年快速选型决策树

问自己三个问题(按顺序):

  1. 你是否需要开箱即用的用户认证、权限、Admin 后台、ORM、表单等一大堆功能?
    → 是 → 选 Django(最省事)
  2. 你的主要目标是构建高性能 RESTful/GraphQL/WebSocket API,并且打算搭配现代前端(React/Vue/Svelte/Next.js 等)?
    → 是 → 选 FastAPI(目前最火、最现代)
  3. 你想自己掌控一切、写最少的 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.pyuvicorn 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.htmltemplates/create.html(类似上面 Django 的模板)。

启动:python app.py

总结建议(2026 年视角)

  • 第一次写网站 → Flask(最容易理解 HTTP、路由、模板、表单)
  • 想快速出完整产品(带登录、权限、后台) → Django
  • 主要做 API、前后端分离、微服务、AI 接口、追求性能与现代感 → FastAPI(目前增长最快、社区最活跃)

你目前的目标是哪一种?

  • 个人博客 / 展示站?
  • 前后端分离的现代 Web App?
  • RESTful API 或 AI 服务接口?
  • 带管理后台的企业级系统?

告诉我你的具体需求(功能、技术栈偏好、是否要数据库等),我可以给你更精确的下一步代码 + 目录结构 + 部署建议。

文章已创建 4237

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部