当前位置: 首页 > news >正文

如何用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 venvsourcevenv/bin/activate# Windows 用 venv\Scripts\activatepipinstalldjango# 2. 创建项目 + 应用django-admin startproject mysitecdmysite python manage.py startapp blog# 3. settings.py 中注册应用# mysite/settings.pyINSTALLED_APPS=[...'blog.apps.BlogConfig',]# 4. 创建超级用户(管理后台用)python manage.py makemigrations python manage.py migrate python manage.py createsuperuser# 5. 写最简单的模型 + 视图 + 模板(blog/models.py)from django.dbimportmodels class Post(models.Model): title=models.CharField(max_length=200)content=models.TextField()created_at=models.DateTimeField(auto_now_add=True)def __str__(self):returnself.title# blog/views.pyfrom django.shortcutsimportrender from .modelsimportPost def index(request): posts=Post.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,name='index'),]# 创建 templates/blog/index.html<!DOCTYPE html><html><head><title>我的博客</title></head><body><h1>最新文章</h1><ul>{%forpostinposts %}<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 后端)

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_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)returndb_post @app.get("/posts/")def read_posts(db: Session=Depends(get_db)):returndb.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(最简单、最灵活)

pipinstallflask flask-sqlalchemy# app.pyfrom flaskimportFlask, render_template, request, redirect, url_for from flask_sqlalchemyimportSQLAlchemy from datetimeimportdatetime 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()returnrender_template('index.html',posts=posts)@app.route('/create',methods=['GET','POST'])def create():ifrequest.method=='POST':title=request.form['title']content=request.form['content']post=Post(title=title,content=content)db.session.add(post)db.session.commit()returnredirect(url_for('index'))returnrender_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 服务接口?
  • 带管理后台的企业级系统?

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

http://www.jsqmd.com/news/325509/

相关文章:

  • 2026年技巧:用抖音训练测试AI模型
  • 互联网大厂Java面试实录:核心技术栈与业务场景深度解析
  • 抽奖系统推荐!年会必备神器!老司机专用神器!
  • Java中随机数生成_java 随机数,零基础入门到精通,收藏这篇就够了
  • 开源工具如何让测试报告美感飙升200%:专业解析与实战指南
  • 深入解析:iOS开发:关于日志框架
  • 2026年当下头部门窗采购有哪些,平移断桥提升窗/侧压平移推拉窗/推拉窗/门窗/安全门窗/窗纱一体铝门窗,门窗采购排行
  • 软件测试公众号爆款内容解析:专业洞察与AI应用
  • Docker核心问题汇总(含原理、操作、网络全解析)
  • adobe acrobat软件可以-另存为-缩小大小-可以将23MB文件转成1MB,太牛逼了
  • [嵌入式系统-171]:直流电机通过PWM信号控制转速和连续运转;步进电机通过脉冲信号实现开环控制,每接收一个脉冲转动一个固定步距角;伺服电机则通过PWM脉宽指令结合内部反馈实现闭环控制,精确控制
  • 2026效率革命:AI会议纪要转测试需求的实战指南
  • Java SE 面向对象
  • 推荐专业的研究院转让公司,全国范围内哪家比较靠谱?
  • Python开发平台怎么选?核心功能与场景匹配指南
  • 低代码测试平台的隐私合规陷阱:软件测试从业者的专业避坑指南
  • 2026年行业内做得好的四边封包装袋批发厂家口碑推荐,中封袋/自立袋/纹路袋/聚酯尼龙袋,四边封包装袋订做厂家哪家靠谱
  • 2026年企业服务性价比大比拼,聊聊中企优帮的市场竞争力和费用详情
  • cycler复数形式是什么?cyclers用法解析
  • 量子算法测试结果解析工具的核心原理与应用价值
  • 408真题解析-2010-21-计组操作系统-中断执行顺序
  • 2026年上门按摩平台权威解析与推荐盘点:五大平台综合深度评估
  • 探讨推荐的AI办公鼠标企业哪家口碑好
  • 字为基·星为途——汉语何以领跑科技时代,领航星际文明?
  • 2026年螺杆式冷水机生产厂售后好的品牌口碑排行榜
  • 收藏备用|小白程序员必看!RAG技术详解,轻松搞定大模型“胡说八道”难题
  • ‌2026年测试数据生成需求暴增:成因、热度与从业者突围指南
  • 2026年马鞍山3M授权加盟连锁店口碑排名
  • 强烈安利10个AI论文工具,继续教育学生轻松搞定论文写作!
  • 2026市场口碑好的光伏连接件源头厂家怎么挑?实用攻略来了,行业内光伏连接件品牌宏罡通用设备专注行业多年经验,口碑良好