Python 的 Web 开发框架种类繁多,常见的有 Django 和 Flask 这两个框架。它们各有优点,适合不同类型的 Web 应用开发需求。下面,我将详细介绍这两大主流框架的使用方法,让你快速上手 Python 的 Web 开发。
1. Django
Django 是一个功能齐全、强大且高效的全栈 Web 开发框架,适合快速开发复杂的 Web 应用。它内置了很多功能,如 ORM(对象关系映射)、表单处理、用户认证、模板引擎等。
Django 安装
首先,你需要通过 pip
安装 Django:
bash
pip install django
创建一个 Django 项目
-
创建项目 :
使用
django-admin startproject
命令创建一个新项目。bashdjango-admin startproject mysite
-
启动开发服务器 :
进入项目目录,启动 Django 的开发服务器。
bashcd mysite python manage.py runserver
打开浏览器,访问
http://127.0.0.1:8000/
,你将看到 Django 的欢迎页面。
创建一个 Django 应用
在 Django 中,项目由多个应用组成。应用是功能模块,可以独立运行。
-
创建应用:
bashpython manage.py startapp blog
这将在项目目录下创建一个名为
blog
的应用文件夹。 -
注册应用 :
打开项目的
settings.py
文件,找到INSTALLED_APPS
,将新创建的blog
应用添加进去:pythonINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', # 注册新应用 ]
定义模型 (Model)
Django 的模型是定义数据库表的方式。假设你想创建一个博客文章模型。
-
在
models.py
中定义模型:pythonfrom 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)
-
创建数据库迁移 :
Django 使用迁移来管理数据库模式。首先,创建迁移文件:
bashpython manage.py makemigrations
-
应用迁移 :
应用迁移,将模型映射到数据库:
bashpython manage.py migrate
创建视图 (Views)
视图是处理请求并返回响应的逻辑。
-
在
views.py
中定义视图:pythonfrom django.shortcuts import render from .models import Post def post_list(request): posts = Post.objects.all() return render(request, 'blog/post_list.html', {'posts': posts})
-
设置 URL 路由 :
在
blog
应用下创建一个urls.py
文件并添加路由:pythonfrom django.urls import path from . import views urlpatterns = [ path('', views.post_list, name='post_list'), ]
-
连接项目的
urls.py
:在项目的
mysite/urls.py
中,包含应用的 URL:pythonfrom django.urls import include, path urlpatterns = [ path('blog/', include('blog.urls')), path('admin/', admin.site.urls), ]
模板 (Templates)
Django 使用模板来渲染 HTML 页面。
-
创建模板文件 :
在blog
文件夹下创建一个templates/blog/post_list.html
文件,填入以下内容:html<!DOCTYPE html> <html> <body> <h1>Blog Posts</h1> <ul> {% for post in posts %} <li>{{ post.title }} - {{ post.created_at }}</li> {% endfor %} </ul> </body> </html>
现在访问 http://127.0.0.1:8000/blog/
,你会看到博客文章列表展示在页面上。
2. Flask
Flask 是一个轻量级的 Web 框架,适合小型应用或 API 开发。与 Django 相比,Flask 更灵活,但需要你自行选择和配置许多工具和库。
Flask 安装
通过 pip
安装 Flask:
bash
pip install Flask
创建一个简单的 Flask 应用
-
创建 Flask 项目 :
在项目目录下创建一个名为
app.py
的文件,写入以下代码:pythonfrom flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello, Flask!" if __name__ == '__main__': app.run(debug=True)
-
运行 Flask 项目 :
在终端中运行:
bashpython app.py
打开浏览器,访问
http://127.0.0.1:5000/
,你会看到页面显示 "Hello, Flask!"。
路由和视图
Flask 使用装饰器定义路由。
-
定义路由和视图 :
你可以根据 URL 创建不同的视图:
python@app.route('/hello/<name>') def hello(name): return f"Hello, {name}!"
-
动态路由 :
Flask 支持动态 URL,你可以使用变量捕获 URL 参数。
python@app.route('/user/<username>') def show_user_profile(username): return f"User {username}"
模板 (Templates)
Flask 使用 Jinja2 作为模板引擎,允许动态生成 HTML。
-
创建模板目录 :
在项目目录下创建一个名为
templates
的文件夹,并在其中创建index.html
文件:html<!DOCTYPE html> <html> <body> <h1>Hello, {{ name }}!</h1> </body> </html>
-
渲染模板 :
修改
app.py
,使用render_template()
函数渲染模板:pythonfrom flask import render_template @app.route('/hello/<name>') def hello(name): return render_template('index.html', name=name)
-
访问 :
现在访问
http://127.0.0.1:5000/hello/Flask
,你会看到页面显示 "Hello, Flask!"。
表单处理
你可以使用 Flask-WTF
来处理表单输入。
-
安装 Flask-WTF:
bashpip install Flask-WTF
-
表单示例:
pythonfrom flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired class NameForm(FlaskForm): name = StringField('What is your name?', validators=[DataRequired()]) submit = SubmitField('Submit')
-
表单视图 :
创建表单视图并处理表单提交:
pythonfrom flask import Flask, render_template, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, SubmitField app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' class NameForm(FlaskForm): name = StringField('What is your name?') submit = SubmitField('Submit') @app.route('/form', methods=['GET', 'POST']) def form(): form = NameForm() if form.validate_on_submit(): return redirect(url_for('hello', name=form.name.data)) return render_template('form.html', form=form)
总结
- Django 是一个全功能的框架,适合快速开发复杂的 Web 应用,特别是当你需要使用强大的后台管理界面、ORM 和用户身份验证时。
- Flask 是一个轻量级框架,更灵活,适合较小的项目和 API 开发,需要你自己选择和配置各种库。
无论选择哪个框架,关键是根据项目需求和个人喜好,灵活运用这些工具进行开发。如果你想要更详细的代码示例或遇到任何问题,随时问我!