Python学习之旅(五) Python Web开发入门

进入本章,我们即将启程探索Python Web开发的精彩领域,特别关注Flask和Django这两个备受推崇的框架。无论您目前是编程新手,还是希望将您的Python技能扩展到Web开发领域,这一章都将为您提供一个扎实的起点。我们将从如何使用Flask构建简洁的Web应用开始,逐步过渡到利用Django开发功能更为丰富、结构更为复杂的网站。

5.1 Flask框架基础

Flask是一个轻量级的Python Web框架,它的“微”指的是保持核心简单但可扩展。Flask依赖于Werkzeug WSGI工具箱和Jinja2模板引擎。适合于小型项目和微服务,以及作为大型应用的一个组件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/436a5af1c60246b5ab67a835b68e2a2e.png

5.1.1 创建一个简单的Web应用

Flask让你能够通过简单的Python代码快速创建一个Web应用。

步骤详解:

  1. 安装Flask: 首先需要使用pip安装Flask。

    pip install Flask
    
  2. 创建Flask实例: 在Python脚本中导入Flask并创建一个Flask应用实例。

  3. 定义路由和视图函数: 路由将URL映射到特定的函数,这个函数称为视图函数,用于生成页面的响应。

  4. 运行应用: 最后,使用run方法启动Flask应用的服务器。

# 导入Flask类
from flask import Flask

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

# 定义路由和对应的视图函数
@app.route('/')
def home():
    return 'Welcome to Flask!'

# 运行Flask应用
if __name__ == '__main__':
    app.run(debug=True)
  • 在这个示例中,我们首先导入了Flask类并创建了一个Flask应用实例。接着,我们使用@app.route装饰器定义了一个路由,它告诉Flask当用户访问网站主页(即URL路径为’/')时应该执行home函数。home函数返回了一个简单的字符串响应,当访问主页时,这个字符串会显示在Web浏览器中。最后,通过if __name__ == '__main__':确保当脚本被直接执行时,Flask服务器会以调试模式启动。

5.1.2 路由和视图

在Flask中,路由是使用app.route装饰器来定义的,它将URL规则映射到视图函数。视图函数返回的内容可以是简单的文本、HTML页面或者重定向到其他页面。

路由参数: Flask允许在路由中使用变量部分,例如/user/<username>,这使得URL可以是动态的,能够接收参数。

# 定义带参数的路由
@app.route('/user/<name>')
def user(name):
    return f'Hello, {name}!'
  • 这个示例展示了如何定义一个带参数的路由。当用户访问如/user/Alice的URL时,user视图函数会被调用,name参数的值会被设置为"Alice"。然后,函数返回一个个性化的问候消息,包含了通过URL传递的参数。

5.1.3 模板

Flask使用Jinja2模板引擎来渲染模板。模板是包含响应文本的文件,其中可以包含Python-like的表达式。使用模板可以将Python代码和HTML页面分离,使得Web应用更易于维护。

模板使用: 将HTML页面保存为.html文件,并存放在Flask应用的templates文件夹下。可以使用render_template()函数来渲染模板文件,并传递需要在模板中使用的变量。

# main.py
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/hello/<user>')
def hello_name(user):
    return render_template('hello.html', name=user)
<!-- hello.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Flask App</title>
</head>
<body>
    <h1>Hello {{ name }}!</h1>
</body>
</html>
  • 在这个示例中,当用户访问如/hello/Alice的URL时,hello_name视图函数被调用,同时user参数的值被传递给render_template()函数。render_template()函数随后渲染hello.html模板,将name变量的值设置为"Al
    ice",生成的HTML页面会包含个性化的问候消息。

5.2 Django框架基础

Django是一个高级的Python Web框架,旨在快速开发安全且可维护的Web应用。它遵循"MTV"模式(模型-模板-视图)。
在这里插入图片描述

5.2.1 Django项目结构

Django项目由多个应用组成,每个应用执行一个特定的功能。一个典型的Django项目包含项目级配置(如设置和URL路由)和多个应用级组件(如模型、视图、模板)。

创建Django项目和应用:

  1. 安装Django: 使用pip安装Django。

    pip install django
    
  2. 创建项目: 使用django-admin startproject myproject命令创建一个新的Django项目。

  3. 创建应用: 在项目目录下,使用python manage.py startapp myapp命令创建一个新的应用。

项目和应用结构示例:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    myapp/
        migrations/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
  • manage.py是Django项目的命令行工具,用于执行各种Django任务,如运行服务器、创建迁移等。settings.py包含项目的配置。urls.py定义了项目的URL路由。myapp/目录包含了应用的所有组件,如模型(models.py)、视图(views.py)和管理员界面配置(admin.py)。

5.2.2 模型和数据库操作

Django的ORM(对象关系映射)允许开发者以Python类的形式定义数据库模型。Django将自动将这些模型转换成数据库表。

定义模型:

# myapp/models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    publish_date = models.DateField()

执行迁移: 定义模型后,需要通过迁移将模型的更改应用到数据库。

  1. 生成迁移文件:python manage.py makemigrations
  2. 应用迁移到数据库:python manage.py migrate

操作数据: Django的ORM提供了丰富的API来创建、检索、更新和删除数据库中的记录。

# 创建一个新的书籍记录
Book.objects.create(title="Django for Beginners", author="William S. Vincent", publish_date="2018-02-01")

# 检索所有书籍
Book.objects.all()

5.2.3 Django后台管理

Django提供了一个功能强大的自动生成的管理界面,使得对数据库中的数据进行增删改查变得非常简单。

激活管理员界面:

  1. 创建超级用户:python manage.py createsuperuser

  2. 在应用的admin.py中注册模型:

    from django.contrib import admin
    from .models import Book
    
    admin.site.register(Book)
    
  3. 访问http://localhost:8000/admin并使用超级用户登录,你将能看到一个友好的界面来管理Book模型的记录。

祝贺您步入Python Web开发的世界!在这一章中,我们介绍了Flask和Django,两个让Web开发变得简单而强大的框架。从搭建基本的Web服务器到创建动态网页,您现在已经具备了用Python构建Web应用的初步知识。随着您不断实践和探索,将有能力开发出更加复杂和精致的Web项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值