Python 创建一个 Flask 或 Django 应用(最佳实践)

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 应用感兴趣,不妨动手试试看,亲自体验它们的魅力。在实践中学习,往往比看书更有效。希望你能在这条学习路上越走越远,成为真正的全栈开发者。