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