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

Python的那些事第十四篇:Flask与Django框架的趣味探索之旅

Python Web应用开发:Flask与Django框架的趣味探索之旅

 

目录

 

第一章:Flask框架的奇幻之旅

第二章:Django框架的奇幻之旅

第三章:Flask与Django的魔法对决

第四章:总结


在Python的世界里,Web开发就像是一场精彩的冒险,而Flask和Django则是这场冒险中不可或缺的“神器”。它们就像是魔法师的魔法棒,能够帮助开发者轻松地构建出强大的Web应用。今天,就让我们一起踏上这场充满欢笑和惊喜的探索之旅,深入了解一下这两个框架的奥秘。


第一章:Flask框架的奇幻之旅

1.1 安装与配置:开启魔法之旅的钥匙

安装Flask

在开始我们的冒险之前,我们需要先找到一把魔法钥匙来开启Flask的魔法世界。这把钥匙就是pip命令。在你的终端或命令行中输入以下命令,就可以安装Flask了:

pip install Flask

安装完成后,你就可以开始你的魔法之旅了。如果你想要一个更加安全的魔法环境,可以使用虚拟环境来隔离你的魔法实验。创建虚拟环境的命令如下:

python -m venv flask_env

激活虚拟环境的命令如下:

source flask_env/bin/activate  # 在Unix或MacOS上
flask_env\Scripts\activate  # 在Windows上
配置Flask

安装好Flask后,我们需要给它配置一个魔法名字。在你的魔法实验室(也就是你的代码文件夹)中,创建一个名为app.py的文件,并写入以下代码:

from flask import Flask
app = Flask(__name__)

这行代码就像是给你的Flask应用起了一个名字,让它知道自己是谁。__name__是一个魔法变量,它告诉Flask应用的根路径在哪里。

1.2 创建应用:魔法城堡的诞生

应用结构

在Flask的世界里,一个应用的结构就像是一个魔法城堡,它包含了各种各样的魔法房间。一个典型的Flask应用结构如下:

my_flask_app/
│
├── app.py
├── templates/
│   └── index.html
├── static/
│   └── style.css
└── venv/
  • app.py:这是魔法城堡的入口,所有的魔法都从这里开始。

  • templates/:这是魔法城堡的图书馆,存放着各种HTML模板文件。

  • static/:这是魔法城堡的宝库,存放着各种静态文件,如CSS、JavaScript等。

  • venv/:这是魔法城堡的魔法实验室,存放着你的虚拟环境。

创建应用实例

app.py中,创建一个Flask应用实例:

from flask import Flask
app = Flask(__name__)

这行代码就像是给你的Flask应用起了一个名字,让它知道自己是谁。__name__是一个魔法变量,它告诉Flask应用的根路径在哪里。

1.3 路由与视图函数:魔法传送门的搭建

定义路由

在Flask的世界里,路由就像是魔法传送门,它能够将用户从一个地方传送到另一个地方。使用@app.route()装饰器来定义路由:

@app.route('/')
def index():
    return 'Welcome to the Home Page!'

这个路由定义了一个根路径/,当用户访问根路径时,会调用index()函数,返回“Welcome to the Home Page!”。

动态路由

有时候,我们需要一个更加灵活的魔法传送门,它可以根据不同的参数将用户传送到不同的地方。这就是动态路由的用处:

@app.route('/user/<username>')
def show_user_profile(username):
    return f'User {username}'

在这个例子中,<username>是一个动态参数,它会作为函数参数传入show_user_profile()函数。当你访问/user/kimi时,它会返回“User kimi”。

1.4 模板渲染(Jinja2模板):魔法图书馆的秘密

渲染模板

Flask使用Jinja2模板引擎来渲染HTML页面。通过render_template()函数将模板文件渲染成HTML页面:

from flask import render_template

@app.route('/')
def index():
    return render_template('index.html', name='Kimi')

在这个例子中,index.html是模板文件,name='Kimi'是传递给模板的变量。

模板语法

在模板文件中,可以使用Jinja2语法来访问传递的变量:

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1>Hello, {
  
  { name }}!</h1>
</body>
</html>

{ { name }}是Jinja2语法,用于在模板中插入变量name的值。

1.5 表单处理:魔法宝库的守护者

创建表单类

Flask通过Flask-WTF扩展简化了表单的创建和验证过程。首先,需要定义一个继承自FlaskForm的表单类:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    submit = SubmitField('Login')

在这个例子中,LoginForm包含用户名和密码字段,并且每个字段都有相应的验证器。

表单验证

当用户提交表单后,需要在视图函数中处理这些数据:

from flask import render_template, redirect, url_for

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        # 如果表单验证通过,可以在这里处理用户数据
        return redirect(url_for('index'))
    return render_template('login.html', form=form)

在模板文件login.html中,可以使用以下代码来渲染表单:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <form method="POST" action="">
        {
  
  { form.hidden_tag() }}
        <p>
            {
  
  { form.username.label }}<br>
            {
  
  { form.username(size=32) }}
        </p>
        <p>
            {
  
  { form.password.label }}<br>
            {
  
  { form.password(size=32) }}
        </p>
        <p>{
  
  { form.submit() }}</p>
    </form>
</body>
</html>

第二章:Django框架的奇幻之旅

2.1 安装与配置:开启魔法之旅的钥匙

安装Django

在Django的世界里,我们同样需要一把魔法钥匙来开启这场冒险。这把钥匙同样是pip命令。在你的终端或命令行中输入以下命令,就可以安装Django了:

pip install Django

安装完成后,你就可以开始你的魔法之旅了。如果你想要一个更加安全的魔法环境,可以使用虚拟环境来隔离你的魔法实验。创建虚拟环境的命令如下:

python -m venv django_env

激活虚拟环境的命令如下:

source django_env/bin/activate  # 在Unix或MacOS上
django_env\Scripts\activate  # 在Windows上
配置Django

安装好Django后,我们需要给它配置一个魔法名字。在你的魔法实验室(也就是你的代码文件夹)中,创建一个名为manage.py的文件,并写入以下代码:

django-admin startproject myproject

这行命令会创建一个名为myproject的Django项目。进入项目目录后,运行以下命令来创建一个应用:

python manage.py startapp myapp

这行命令会创建一个名为myapp的Django应用。在myapp目录中,你会看到一个models.py文件,这是Django的魔法模型文件。

2.2 项目结构:魔法城堡的布局

一个典型的Django项目结构如下:

myproject/
│
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── myapp/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    └── views.py
  • manage.py:这是Django项目的入口文件,用于管理Django项目的各种命令。

  • settings.py:这是Django项目的配置文件,包含了数据库设置、应用列表等。

  • urls.py:这是Django项目的URL路由文件,用于定义项目的URL路径。

  • models.py:这是Django应用的模型文件,用于定义数据库模型。

  • views.py:这是Django应用的视图文件,用于定义视图函数。

2.3 模型(ORM):魔法模型的构建

定义模型

在Django的世界里,模型就像是魔法城堡的基石,它定义了数据库的结构。在models.py中,定义一个模型如下:

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    password = models.CharField(max_length=100)

这个模型定义了一个User表,包含nameemailpassword三个字段。

数据库操作

在Django中,可以通过ORM操作数据库。例如,创建一个用户:

user = User.objects.create(name='Kimi', email='kimi@example.com', password='password')

查询用户:

users = User.objects.all()

更新用户:

user = User.objects.get(name='Kimi')
user.email = 'new_email@example.com'
user.save()

删除用户:

user = User.objects.get(name='Kimi')
user.delete()

2.4 视图与模板:魔法传送门与魔法图书馆

视图函数

在Django中,视图函数就像是魔法传送门,它能够将用户从一个地方传送到另一个地方。在views.py中,定义一个视图函数如下:

from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

这个视图函数定义了一个根路径/,当用户访问根路径时,会调用index()函数,渲染index.html模板。

模板语法

在模板文件中,可以使用Django模板语言来访问传递的变量:

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1>Hello, {
  
  { name }}!</h1>
</body>
</html>

{ { name }}是Django模板语言,用于在模板中插入变量name的值。

2.5 URL路由:魔法传送门的布局

在Django中,URL路由就像是魔法传送门的布局,它定义了用户可以通过哪些路径访问应用。在urls.py中,定义URL路由如下:

from django.urls import path
from . import views

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

这个路由定义了一个根路径/,当用户访问根路径时,会调用index()视图函数。

2.6 表单与验证:魔法宝库的守护者

创建表单类

在Django中,表单类就像是魔法宝库的守护者,它能够保护用户输入的数据。在forms.py中,定义一个表单类如下:

from django import forms

class LoginForm(forms.Form):
    username = forms.CharField(label='Username', max_length=100)
    password = forms.CharField(label='Password', widget=forms.PasswordInput)

这个表单类定义了一个登录表单,包含用户名和密码两个字段。

表单验证

在视图函数中,可以使用表单类来验证用户输入的数据:

from django.shortcuts import render, redirect
from .forms import LoginForm

def login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            # 如果表单验证通过,可以在这里处理用户数据
            return redirect('index')
    else:
        form = LoginForm()
    return render(request, 'login.html', {'form': form})

在模板文件login.html中,可以使用以下代码来渲染表单:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <form method="POST" action="">
        {% csrf_token %}
        <p>
            {
  
  { form.username.label }}<br>
            {
  
  { form.username }}
        </p>
        <p>
            {
  
  { form.password.label }}<br>
            {
  
  { form.password }}
        </p>
        <p><input type="submit" value="Login"></p>
    </form>
</body>
</html>

第三章:Flask与Django的魔法对决

在Python的Web开发世界里,Flask和Django就像是两个强大的魔法师,它们各自有着独特的魔法技能。Flask以其简洁和灵活性著称,而Django则以其强大和功能齐全而闻名。那么,它们之间到底谁更胜一筹呢?

3.1 简洁性:魔法咒语的长度

在简洁性方面,Flask无疑是胜者。它的魔法咒语(代码)非常简洁,容易理解和使用。例如,创建一个简单的Web应用只需要几行代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, Flask!'

而Django则需要更多的魔法咒语来完成同样的任务。例如,创建一个Django项目需要运行以下命令:

django-admin startproject myproject

然后还需要创建一个应用:

python manage.py startapp myapp

views.py中定义视图函数:

from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

urls.py中定义URL路由:

from django.urls import path
from . import views

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

3.2 功能性:魔法宝库的丰富程度

在功能性方面,Django无疑是胜者。它自带了许多强大的魔法工具,如ORM、表单验证、用户认证等。这些工具使得Django能够轻松地构建出功能强大的Web应用。例如,Django的ORM可以非常方便地操作数据库:

user = User.objects.create(name='Kimi', email='kimi@example.com', password='password')

而Flask则需要借助第三方扩展来实现类似的功能。例如,使用Flask-SQLAlchemy来操作数据库:

from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)

3.3 社区支持:魔法学院的规模

在社区支持方面,Django和Flask都有着庞大的魔法学院。Django的社区更加成熟和稳定,它有着丰富的文档和教程,可以帮助开发者快速上手。而Flask的社区则更加活跃和创新,它不断地推出新的扩展和工具,帮助开发者实现各种功能。

3.4 性能:魔法能量的强度

在性能方面,Flask和Django都有着出色的表现。Flask的性能非常出色,它的魔法能量(性能)非常强大。它能够快速地处理用户的请求,并返回响应。而Django的性能也不逊色,它能够轻松地处理大量的用户请求,并且可以进行水平扩展。


第四章:总结

在Python的Web开发世界里,Flask和Django都是非常强大的魔法师。它们各自有着独特的魔法技能,可以帮助开发者构建出功能强大的Web应用。Flask以其简洁和灵活性著称,而Django则以其强大和功能齐全而闻名。在选择魔法师时,开发者需要根据自己的需求和喜好来选择。如果你喜欢简洁和灵活的魔法,那么Flask无疑是你的最佳选择。如果你喜欢强大和功能齐全的魔法,那么Django则是你的不二之选。

无论你选择哪个魔法师,Python的Web开发世界都充满了无限的可能性。只要你掌握了正确的魔法技能,你就可以轻松地构建出功能强大的Web应用。希望这次的魔法之旅能够帮助你更好地了解Python的Web开发世界,让你在未来的开发中更加得心应手。


http://www.kler.cn/a/536494.html

相关文章:

  • 使用Python的Tabulate库优雅地格式化表格数据
  • 算法与数据结构(删除有序数组的重复项)
  • 网安三剑客:DNS、CDN、VPN
  • 某团面试题①—kudu读写流程
  • Maven 依赖管理全面解析
  • 阿里云cdn怎样设置图片压缩
  • 阿里云cdn怎样设置图片压缩
  • 【Spring】_SpringBoot配置文件
  • Jetpack ViewModel
  • grafana面板配置opentsdb
  • 大模型deepseek-r1 本地快速搭建
  • 3D展示已成趋势,哪些产品适合3D交互展示?
  • 不用调试器,如何定位“Hard Fault”?
  • 用户点击商品埋点的实现方案
  • 跨平台App开发,有哪些编程语言和工具,比较一下优劣势?
  • STM32的HAL库开发-通用定时器输入捕获实验
  • 【电商系统架构的深度剖析与技术选型】
  • 基于SpringBoot养老院平台系统功能实现五
  • MySQL三大日志——binlog、redoLog、undoLog详解
  • RAG:知识库参数设置
  • .NET Framework和.NET Core的区别
  • 深度学习入门:搭建你的第一个神经网络
  • 群晖NAS如何通过WebDAV和内网穿透实现Joplin笔记远程同步
  • Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)
  • 如何在Windows 8.1上配置并使用Hyper-V功能
  • Qwen2-VL-2B-Instruct 模型 RK3576 板端部署过程