Python 创建一个 Flask 或 Django 应用的完整指南
对于初学者和中级开发者来说,选择一个合适的 Python Web 框架是进入 Web 开发世界的第一步。Flask 和 Django 作为 Python 生态中最受欢迎的两个框架,各有其特点与适用场景。本文将带你从零开始,了解如何使用 Python 创建一个 Flask 或 Django 应用,并通过实际案例帮助你快速上手。
Flask 与 Django 的对比
在动手创建应用之前,我们先来简单比较一下 Flask 和 Django 的主要特点:
Flask 是一个轻量级的微框架,适合小型项目或需要高度定制的开发需求。它没有内置的数据库 ORM、用户认证等复杂功能,但正因为如此,它的学习曲线相对平缓,非常适合初学者入门。
Django 则是一个“全栈”框架,提供了许多开箱即用的功能,如数据库 ORM、用户认证、后台管理等。它更适合中大型项目,尤其是那些需要快速开发并保持可维护性的应用。
如果你是刚入门 Web 开发,建议从 Flask 开始,因为它更灵活,能让你更清楚地理解 Web 开发的底层逻辑。如果你希望快速搭建功能齐全的网站,Django 是一个更高效的选择。
以下是两个框架的简单对比表格,帮助你更直观地理解它们的差异:
| 特性 | Flask | Django |
|---|---|---|
| 框架类型 | 微框架 | 全栈框架 |
| 数据库支持 | 需要第三方扩展(如 SQLAlchemy) | 内置 ORM |
| 用户认证 | 无内置功能 | 内置强大认证系统 |
| 学习难度 | 较低 | 中等 |
| 适合项目类型 | 小型项目、API、原型开发 | 中大型项目、功能齐全的网站 |
Python 创建一个 Flask 应用的步骤
我们先从 Flask 开始,一步步创建一个简单的 Web 应用。
安装 Flask
要使用 Flask,首先需要安装它。打开终端,运行以下命令:
pip install Flask
如果你使用的是 Python 3,可能需要使用
pip3命令。确保你已经配置好了 Python 的环境变量。
创建项目结构
Flask 项目通常不需要复杂的目录结构,但为了良好的组织,我们可以建立如下结构:
my_flask_app/
├── app.py
└── templates/
└── index.html
其中,app.py 是主程序文件,templates/ 目录用于存放 HTML 模板。
编写第一个 Flask 应用
在 app.py 中,输入以下代码:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return '欢迎使用 Flask!'
@app.route('/home')
def home():
return render_template('index.html') # 渲染 templates 目录下的 index.html
if __name__ == '__main__':
app.run(debug=True)
这段代码非常简单,但包含了 Flask 应用的基本组成部分:
- 使用
Flask(__name__)创建了一个 Flask 应用; - 使用
@app.route()定义了两个 URL 路由; - 使用
render_template()加载 HTML 模板; app.run(debug=True)启动了一个开发服务器,并开启了调试模式。
创建 HTML 模板
在 templates/ 目录下创建 index.html 文件,并写入以下内容:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Flask 首页</title>
</head>
<body>
<h1>你好,Flask 世界!</h1>
<p>这是由 Flask 渲染的 HTML 页面。</p>
</body>
</html>
保存文件后,运行 app.py,然后在浏览器中访问 http://127.0.0.1:5000/home,你将看到这个 HTML 页面。
通过以上步骤,你已经成功用 Python 创建了一个 Flask 应用。Flask 的简洁性让它非常适合用于 API 开发或简单的网页项目。
Python 创建一个 Django 应用的步骤
接下来,我们来看看如何使用 Django 创建一个完整的 Web 应用。Django 提供了更多开箱即用的功能,因此它的项目结构会更复杂一些。
安装 Django
运行以下命令安装 Django:
pip install Django
创建 Django 项目
使用 Django 提供的命令行工具,我们可以快速创建项目和应用:
django-admin startproject my_django_project
cd my_django_project
python manage.py startapp my_app
my_django_project是项目名称,my_app是应用名称。你可以根据自己的需求修改这些名称。
配置 settings.py
打开 my_django_project/settings.py 文件,找到 INSTALLED_APPS 列表,将 my_app 添加进去:
INSTALLED_APPS = [
...
'my_app',
]
这样,Django 就会知道需要启用这个应用。
编写视图和路由
在 my_app/views.py 中,编写一个简单的视图函数:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("欢迎使用 Django!")
def home(request):
return render(request, 'index.html')
接着,在 my_app/ 目录下创建 urls.py 文件,并定义路由:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('home/', views.home, name='home'),
]
然后,在主项目的 urls.py 中包含这个应用的路由:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('my_app.urls')),
]
创建 HTML 模板
在 my_app/ 目录下创建一个 templates/ 文件夹,并在其中添加 index.html 文件:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Django 首页</title>
</head>
<body>
<h1>你好,Django 世界!</h1>
<p>这是由 Django 渲染的 HTML 页面。</p>
</body>
</html>
确保 index.html 文件放置在 templates/ 目录下,而不是应用根目录下。
运行 Django 开发服务器
在项目根目录运行以下命令启动服务器:
python manage.py runserver
然后访问 http://127.0.0.1:8000/ 和 http://127.0.0.1:8000/home/,分别看到两个视图的输出。
通过以上步骤,你已经用 Python 创建了一个 Django 应用,并了解了如何设置路由和模板。Django 的优势在于它的功能丰富,适合需要快速开发和部署的项目。
选择 Flask 还是 Django?
在 Python 创建一个 Flask 或 Django 应用的过程中,你可能已经发现它们的风格和复杂程度大不相同。那么,如何选择更适合自己的框架呢?
- 如果你是初学者,或者需要开发一个小型的 API 服务、简单的网页,那么 Flask 是一个不错的选择。它不强加任何设计模式,可以自由选择数据库、模板引擎等工具。
- 如果你希望开发一个功能齐全、结构清晰的中大型网站,并且希望节省时间,Django 的内置功能会让你事半功倍。它提供了用户认证、数据库迁移、后台管理等工具,开箱即用。
可以将 Flask 比作“手工制作的自行车”,而 Django 则像“一辆配有导航和变速器的电动车”。选择哪一种,取决于你对项目规模、开发速度和灵活性的需求。
Flask 和 Django 实际应用案例
为了帮助你更好地理解 Python 创建一个 Flask 或 Django 应用的实际效果,我们来看两个简单的案例。
案例一:Flask 构建的天气查询 API
使用 Flask,你可以快速构建一个查询天气信息的 API 接口。假设我们有一个简单的 Python 函数 get_weather(city),用于获取城市天气。我们可以这样写:
from flask import Flask, request, jsonify
app = Flask(__name__)
def get_weather(city):
# 假设返回固定值
return {"city": city, "temperature": "25°C", "condition": "晴天"}
@app.route('/weather', methods=['GET'])
def weather_api():
city = request.args.get('city') # 获取 URL 参数
if not city:
return jsonify({"error": "缺少城市参数"}), 400
weather = get_weather(city)
return jsonify(weather)
if __name__ == '__main__':
app.run(debug=True)
访问 http://127.0.0.1:5000/weather?city=北京,你将看到返回的天气数据。这样的 API 可以轻松集成到前端应用或移动应用中。
案例二:Django 构建的博客系统
Django 的强大在于其 ORM 和后台管理功能。我们可以创建一个简单的博客模型,然后自动生成后台管理界面。在 models.py 中添加如下代码:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('发布时间')
def __str__(self):
return self.title
运行以下命令来创建数据库表:
python manage.py makemigrations
python manage.py migrate
然后,在 admin.py 中注册模型:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
启动服务器后,访问 http://127.0.0.1:8000/admin,输入管理员账号密码,即可看到 Post 模型的管理界面。这大大简化了博客内容的维护工作。
总结
通过本文,你应该已经掌握了如何使用 Python 创建一个 Flask 或 Django 应用的基本流程。Flask 适合轻量级项目,Django 适合功能丰富、结构清晰的中大型项目。两者各有优势,选择合适的框架能够极大提升开发效率和代码质量。
对于初学者,建议从 Flask 开始,了解 Web 开发的基本原理;对于中级开发者,可以尝试 Django,学习如何高效地组织项目结构和使用其内置功能。
如果你对 Python 创建一个 Flask 或 Django 应用感兴趣,不妨动手试试看,亲自体验它们的魅力。在实践中学习,往往比看书更有效。希望你能在这条学习路上越走越远,成为真正的全栈开发者。