核心内容摘要
3分钟解锁赛马娘中文体验:Trainers‘ Legend G插件全攻略
用 Python 搭建一个网站有多种路径2025–2026 年的主流选择已经非常清晰。
目前2026 年初最常见的三个起点是目标 / 场景2025–2026 最推荐框架学习曲线启动速度性能排名典型公司/项目类型推荐指数 (
传统完整网站有后台、用户系统、CMS、管理面板Django中等最快中等电商、管理后台、内容平台、SaaS★★★★★现代高性能 API 前后端分离React/Vue/小程序/H5FastAPI较低非常快最快AI 服务、微服务、移动后端、数据接口★★★★★极简原型、个人小站、学习 Web 基础、非常灵活控制Flask最低快中上小工具、内部服务、教学项目★★★★2026 年快速选型决策树问自己三个问题按顺序你是否需要开箱即用的用户认证、权限、Admin 后台、ORM、表单等一大堆功能→ 是 → 选Django最省事你的主要目标是构建高性能 RESTful/GraphQL/WebSocket API并且打算搭配现代前端React/Vue/Svelte/Next.js 等→ 是 → 选FastAPI目前最火、最现代你想自己掌控一切、写最少的 boilerplate 代码、做极简项目/学习 HTTP 原理→ 是 → 选Flask最自由下面给出三种框架从零到能跑起来的最短路径2026 年最新写法。
路径一Django最适合完整网站#
安装推荐虚拟环境python -m venv venvsourcevenv/bin/activate# Windows 用 venv\Scripts\activatepipinstalldjango#
创建项目 应用django-admin startproject mysitecdmysite python manage.py startapp blog#
settings.py 中注册应用# mysite/settings.pyINSTALLED_APPS[...blog.apps.BlogConfig,]#
创建超级用户管理后台用python manage.py makemigrations python manage.py migrate python manage.py createsuperuser#
写最简单的模型 视图 模板blog/models.pyfrom django.dbimportmodels class Post(models.Model): titlemodels.CharField(max_length
contentmodels.TextField()created_atmodels.DateTimeField(auto_now_addTrue)def __str__(self):returnself.title# blog/views.pyfrom django.shortcutsimportrender from .modelsimportPost def index(request): postsPost.objects.all()returnrender(request,blog/index.html,{posts:posts})# mysite/urls.pyfrom django.contribimportadmin from django.urlsimportpath, include urlpatterns[path(admin/, admin.site.urls), path(, include(blog.urls)),]# blog/urls.py 新建from django.urlsimportpath from.importviews urlpatterns[path(, views.index,nameindex),]# 创建 templates/blog/index.html!DOCTYPE htmlhtmlheadtitle我的博客/title/headbodyh1最新文章/h1ul{%forpostinposts %}li-/li{% endfor %}/ul/body/html#
启动python manage.py runserver访问 http://
127.
0.
1:8000/ 就能看到页面http://
127.
0.
1:8000/admin/ 有管理后台。
路径二FastAPI2026 年最推荐的现代 API 后端pipinstallfastapi uvicorn[standard]sqlalchemy pydantic-settings# main.pyfrom fastapiimportFastAPI, Depends, HTTPException from sqlalchemyimportcreate_engine, Column, Integer, String, DateTime from sqlalchemy.ext.declarativeimportdeclarative_base from sqlalchemy.ormimportsessionmaker, Session from datetimeimportdatetime from pydanticimportBaseModelimportuvicorn# 数据库SQLite 示例DATABASE_URLsqlite:///./blog.dbenginecreate_engine(DATABASE_URL)SessionLocalsessionmaker(autocommitFalse,autoflushFalse,bindengine)Basedeclarative_base()class Post(Base): __tablename__postsidColumn(Integer,primary_keyTrue,indexTrue)titleColumn(String,indexTrue)contentColumn(String)created_atColumn(DateTime,defaultdatetime.utcnow)Base.metadata.create_all(bindengine)# Pydantic 模型class PostCreate(BaseModel): title: str content: str class PostOut(PostCreate): id: int created_at: datetime class Config: from_attributesTrue appFastAPI(title我的博客 API)# 依赖def get_db(): dbSessionLocal()try: yield db finally: db.close()app.post(/posts/,response_modelPostOut)def create_post(post: PostCreate, db: SessionDepends(get_db)): db_postPost(**post.model_dump())db.add(db_post)db.commit()db.refresh(db_post)returndb_post app.get(/posts/)def read_posts(db: SessionDepends(get_db)):returndb.query(Post).all()if__name____main__:uvicorn.run(app,host
0.
0.
0,port
启动python main.py或uvicorn main:app --reload访问 http://
127.
0.
1:8000/docs → 自动 Swagger 文档界面2026 年最爽的开发体验之一路径三Flask最简单、最灵活pipinstallflask flask-sqlalchemy# app.pyfrom flaskimportFlask, render_template, request, redirect, url_for from flask_sqlalchemyimportSQLAlchemy from datetimeimportdatetime appFlask(__name__)app.config[SQLALCHEMY_DATABASE_URI]sqlite:///blog.dbapp.config[SQLALCHEMY_TRACK_MODIFICATIONS]False dbSQLAlchemy(app)class Post(db.Model):iddb.Column(db.Integer,primary_keyTrue)titledb.Column(db.String(
,nullableFalse)contentdb.Column(db.Text,nullableFalse)created_atdb.Column(db.DateTime,defaultdatetime.utcnow)with app.app_context(): db.create_all()app.route(/)def index(): postsPost.query.all()returnrender_template(index.html,postsposts)app.route(/create,methods[GET,POST])def create():ifrequest.methodPOST:titlerequest.form[title]contentrequest.form[content]postPost(titletitle,contentcontent)db.session.add(post)db.session.commit()returnredirect(url_for(index))returnrender_template(create.html)if__name____main__:app.run(debugTrue)创建templates/index.html和templates/create.html类似上面 Django 的模板。
启动python app.py