Python 课程11-Web 开发

前言

Web 开发已经成为现代软件开发的核心领域之一,许多应用程序和服务都通过 Web 来与用户和其他系统交互。Python 作为一门广泛使用的编程语言,提供了多种 Web 开发框架,其中最流行的两个框架是 FlaskDjango

  • Flask 是一个轻量级的 Web 框架,灵活、易于学习,适合快速构建简单的 Web 应用。
  • Django 是一个功能齐全的 Web 框架,提供了强大的内置功能,适合开发复杂的 Web 项目。

本教程将带你通过 Flask 和 Django 了解 Python Web 开发的基础。我们将从创建一个简单的 Flask Web 应用开始,然后逐步介绍如何处理路由和表单,最后介绍如何使用 Django 构建复杂的 Web 项目。


目录

  1. Flask Web 开发

    • 什么是 Flask?
    • 安装与快速入门
    • 路由与视图函数
    • 表单处理与请求方法
    • 模板渲染与静态文件
    • 部署 Flask 应用
  2. Django Web 开发

    • 什么是 Django?
    • 安装与快速入门
    • Django 项目结构解析
    • 路由与视图
    • 模板引擎与表单处理
    • 使用 Django ORM 进行数据库操作
    • Django Admin 后台管理系统
    • 部署 Django 项目

1. Flask Web 开发

什么是 Flask?

Flask 是一个基于 Python 的轻量级 Web 框架。它的设计哲学是简单而灵活,不像 Django 那样具有大量的功能和规则,Flask 提供了极少的工具,并允许开发者根据需求自由选择第三方扩展。这使得 Flask 非常适合快速开发小型 Web 应用。

安装与快速入门

在开始使用 Flask 之前,需要先安装它:

pip install Flask

创建一个简单的 Flask 应用:

from flask import Flask

# 创建 Flask 应用
app = Flask(__name__)

# 定义路由和视图函数
@app.route('/')
def home():
    return "Hello, Flask!"

# 启动应用
if __name__ == '__main__':
    app.run(debug=True)

在这段代码中:

  • 我们创建了一个 Flask 应用实例。
  • 使用 @app.route('/') 定义了一个路由,访问 http://localhost:5000/ 时会触发 home() 函数。
  • app.run(debug=True) 启动 Flask 开发服务器,debug=True 可以在代码更改时自动重新加载应用。
路由与视图函数

Flask 中的路由用于将 URL 与视图函数绑定。视图函数定义了当用户访问特定 URL 时,应该执行的逻辑。

@app.route('/hello/<name>')
def hello(name):
    return f"Hello, {name}!"

在这个例子中,路由 /hello/<name> 使用了动态 URL 参数。当访问 http://localhost:5000/hello/John 时,浏览器将会显示 Hello, John!

表单处理与请求方法

Flask 提供了处理不同 HTTP 请求方法的功能,例如 GETPOST

下面是一个包含表单的示例,通过 POST 请求来提交数据:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/submit', methods=['GET', 'POST'])
def submit():
    if request.method == 'POST':
        name = request.form['name']
        return f"Hello, {name}!"
    return render_template('submit_form.html')

在这里,我们通过 methods=['GET', 'POST'] 指定路由支持 GET 和 POST 请求。request.form 用于获取表单数据。

示例表单模板 submit_form.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Submit Form</title>
</head>
<body>
    <form action="/submit" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name">
        <input type="submit" value="Submit">
    </form>
</body>
</html>
模板渲染与静态文件

Flask 使用 Jinja2 模板引擎来渲染动态 HTML。可以通过 render_template() 函数渲染模板。

from flask import render_template

@app.route('/welcome/<name>')
def welcome(name):
    return render_template('welcome.html', name=name)

模板文件 welcome.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Welcome</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

在模板中使用 {``{ name }} 来插入动态内容。static 文件夹中可以放置静态文件(如 CSS、JavaScript、图片等),并通过 url_for() 函数来引用它们。

部署 Flask 应用

在本地开发完成 Flask 应用后,可以通过多种方式将应用部署到线上服务器。常见的部署方式包括:

  • 使用 GunicornNginx 部署到 Linux 服务器。
  • 部署到 Heroku 等 PaaS 平台。
  • 使用 Docker 容器化部署。

2. Django Web 开发

什么是 Django?

Django 是一个功能齐全、成熟的 Web 框架,旨在帮助开发者快速构建高性能和高可维护性的 Web 应用。与 Flask 的轻量级设计不同,Django 提供了丰富的内置功能,包括 ORM、表单处理、认证系统、管理后台等,适合用于开发复杂的 Web 应用。

安装与快速入门

安装 Django:

pip install django

创建 Django 项目:

django-admin startproject myproject
cd myproject
python manage.py runserver

使用 Django 内置的开发服务器启动应用,并访问 http://localhost:8000/

Django 项目结构解析

创建 Django 项目后,目录结构如下:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py
  • manage.py:Django 项目的命令行工具,用于运行服务器、创建数据库、执行迁移等。
  • settings.py:项目的全局设置文件,包括数据库配置、应用列表等。
  • urls.py:用于定义 URL 路由。
  • wsgi.py:WSGI 入口文件,通常用于部署。
路由与视图

在 Django 中,路由由 urls.py 文件管理,视图函数或类定义处理请求的逻辑。

# myproject/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

# myproject/views.py
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")
模板引擎与表单处理

Django 提供了强大的模板系统,允许你在模板中使用逻辑语句,并处理表单提交。

<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
    <h1>Welcome to Django</h1>
    <form method="post">
        {% csrf_token %}
        <input type="text" name="name">
        <input type="submit" value="Submit">
    </form>
</body>
</html>

视图函数可以处理 POST 请求中的表单数据:

# views.py
from django.shortcuts import render

def index(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        return HttpResponse(f"Hello, {name}!")
    return render(request, 'index.html')
使用 Django ORM 进行数据库操作

Django 提供了强大的 ORM(对象关系映射),使得开发者可以用 Python 代码来操作数据库,而不需要直接编写 SQL。

创建模型(Model):

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.title

使用命令迁移数据库结构:

python manage.py makemigrations
python manage.py migrate

使用 Django ORM 进行数据库操作:

# 创建对象
article = Article.objects.create(title="Django ORM", content="Django makes it easy to work with databases.")
article.save()
# 查询对象
articles = Article.objects.all()  # 获取所有文章
specific_article = Article.objects.get(id=1)  # 获取特定文章

# 更新对象
specific_article.title = "Updated Title"
specific_article.save()

# 删除对象
specific_article.delete()

在 Django 中,通过 ORM 操作数据库非常简单,它支持多种数据库(如 SQLite、PostgreSQL、MySQL 等),并且支持复杂的查询、过滤、关联操作等。

Django Admin 后台管理系统

Django 提供了一个非常强大的内置管理后台系统,开发者只需简单配置,即可为网站的后台管理提供完善的界面。通过 Django Admin,开发者可以管理数据库中的对象、执行数据操作,甚至扩展为用户提供丰富的后台功能。

启用 Django Admin:

首先,需要在 INSTALLED_APPS 中确保包含 django.contrib.admin,这个应用是 Django 管理后台系统的一部分。

然后,注册模型到 Admin 中:

# admin.py
from django.contrib import admin
from .models import Article

admin.site.register(Article)

接着,创建一个超级用户以登录管理后台:

python manage.py createsuperuser

运行服务器后,访问 http://localhost:8000/admin,你将看到一个完整的后台管理系统,能够直接操作数据库中的数据。

部署 Django 项目

在本地开发完成 Django 项目后,可以通过以下方式将项目部署到线上环境:

  1. 使用 Gunicorn 和 Nginx 部署到 Linux 服务器

    • Gunicorn 是一个高效的 Python WSGI 服务器,能够运行 Django 应用。
    • Nginx 是一个常见的 Web 服务器,负责处理静态文件、负载均衡、反向代理等任务。

    基本步骤包括安装 GunicornNginx,配置 Gunicorn 运行 Django 项目,使用 Nginx 作为反向代理服务器。

  2. 部署到 Heroku 等 PaaS 平台

    • Heroku 是一个 PaaS 平台,允许开发者轻松部署应用,而无需关心底层的服务器配置。
    • 使用 git push 命令将 Django 项目推送到 Heroku 上,Heroku 会自动处理服务器配置和部署细节。
  3. 使用 Docker 容器化部署

    • Docker 提供了一种将应用及其依赖环境打包为容器的方式,能够轻松地将 Django 项目迁移到不同的环境中。
    • 可以通过 Dockerfiledocker-compose 来构建和部署 Django 项目。

结论

通过本教程,我们详细介绍了如何使用 Flask 和 Django 进行 Web 开发。Flask 是一个轻量级的框架,适合快速构建简单的 Web 应用,而 Django 提供了丰富的内置功能,能够帮助开发者快速开发复杂的 Web 项目。

  • Flask 让你能够快速启动、构建路由、处理表单,并通过模板渲染动态内容,是初学者学习 Web 开发的绝佳选择。
  • Django 则提供了强大的 ORM、表单处理、模板引擎以及内置的管理后台,帮助开发者更好地管理和扩展应用,适合大型项目的开发。

无论你选择 Flask 还是 Django,Python 都为 Web 开发提供了极大的便利。通过不断的实践和学习,你将能够掌握 Web 开发的核心技能,构建出稳定、高效的 Web 应用。

相关推荐
轻口味36 分钟前
命名空间与模块化概述
开发语言·前端·javascript
晓纪同学2 小时前
QT-简单视觉框架代码
开发语言·qt
威桑2 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服2 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans2 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
算法小白(真小白)2 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python