当前位置: 首页 > article >正文

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 应用。


http://www.kler.cn/news/306224.html

相关文章:

  • Android 10.0 mtk平板camera2横屏预览旋转90度横屏保存圆形预览缩略图旋转90度功能实现
  • 蓝桥杯3. 压缩字符串
  • 掌握远程管理的艺术:揭秘Python的pywinrm库
  • 【OJ刷题】双指针问题3
  • 通义灵码在Visual Studio上
  • spring-TransactionTemplate 编程式事务
  • C#笔记10 Thread类怎么终止(Abort)和阻止(Join)线程
  • SQLite的入门级项目学习记录(四)
  • [项目][WebServer][Task]详细讲解
  • python绘制3d建筑
  • flask-sqlalchemy的模型类两个表,既有一对一又有一对多的情况时,解决方法
  • SAP HCM HR_ABS_ATT_TIMES_AT_ENTRY 跨夜班不生效问题
  • 【MyBatis精讲】从入门到精通的详细指南:简化Java持久层操作的艺术
  • 开源 AI 智能名片小程序:开启内容营销新境界
  • Harmony Next 文件命令操作(发送、读取、媒体文件查询)
  • 【最佳实践】配置类封装-Async异步注解以及自定义线程池
  • 对操作系统(OS)管理和进程的理解
  • 28 线性表 · 栈
  • golang的GC(三色标记法+混合写屏障)学习笔记
  • 第一篇---滑动窗口最大值、前 K 个高频元素
  • 初识爬虫2
  • Linux删除SSH生成的密钥对
  • 探索Python的Excel世界:openpyxl的魔法之旅
  • 【homebrew安装】踩坑爬坑教程
  • 路由策略原理与配置
  • C#笔记11 获取线程及其信息,什么是优先级、单元状态、线程状态、执行状态、线程名称以及其他属性?
  • 一文速通calcite结合flink理解SQL从文本变成执行计划详细过程
  • Kubernetes Pod镜像的3种状态
  • STM32-UART配置注释
  • 标准库标头 <bit>(C++20)学习