Python Web 框架开发:Django 与 Flask 入门与实战

news/2025/3/26 17:50:21/文章来源:https://www.cnblogs.com/yoyoliwu/p/18790383

Python Web 框架开发:Django 与 Flask 入门与实战

在当今数字化时代,Web 开发是编程领域中最具吸引力的方向之一。Python 作为一门简洁而强大的语言,提供了多种优秀的 Web 框架,其中 Django 和 Flask 是最受欢迎的两个。它们都能够让开发者快速构建 Web 应用,但各有特点和适用场景。今天,我们将通过实际案例,详细介绍如何使用 Django 和 Flask 进行 Web 应用开发,涵盖项目结构、路由、视图和模板等内容,帮助你快速上手 Web 开发。

一、Django:全栈 Web 框架

Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。Django 遵循“不要重复造轮子”的原则,提供了丰富的内置功能,能够帮助开发者快速构建复杂的 Web 应用。

(一)Django 项目结构

一个典型的 Django 项目包含以下结构:

myproject/
│
├── myproject/               # 项目配置文件
│   ├── __init__.py
│   ├── settings.py          # 配置文件
│   ├── urls.py              # URL 路由配置
│   ├── wsgi.py              # WSGI 配置
│
├── myapp/                   # 应用目录
│   ├── __init__.py
│   ├── admin.py             # 管理后台配置
│   ├── apps.py              # 应用配置
│   ├── models.py            # 数据模型
│   ├── tests.py             # 测试文件
│   ├── views.py             # 视图函数
│   ├── urls.py              # 应用的 URL 路由
│   ├── templates/           # 模板文件
│       ├── base.html
│       ├── index.html
│
├── manage.py                # 项目管理脚本

(二)创建 Django 项目

  1. 安装 Django

    pip install django
    
  2. 创建项目

    django-admin startproject myproject
    cd myproject
    
  3. 创建应用

    python manage.py startapp myapp
    
  4. 注册应用

    myproject/settings.py 中的 INSTALLED_APPS 列表中添加 'myapp'

(三)路由与视图

  1. 定义路由

    myapp/urls.py 中定义路由:

    from django.urls import path
    from . import viewsurlpatterns = [path('', views.index, name='index'),
    ]
    

    myproject/urls.py 中包含应用的路由:

    from django.contrib import admin
    from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('', include('myapp.urls')),
    ]
    
  2. 创建视图

    myapp/views.py 中定义视图函数:

    from django.shortcuts import renderdef index(request):return render(request, 'index.html')
    

(四)模板

  1. 创建模板文件

    myapp/templates 文件夹中创建 index.html 文件:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>首页</title>
    </head>
    <body><h1>欢迎来到我的 Django 应用</h1>
    </body>
    </html>
    
  2. 配置模板路径

    myproject/settings.py 中配置 TEMPLATES

    TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / 'templates'],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
    ]
    

(五)运行项目

python manage.py runserver

访问 http://127.0.0.1:8000 即可看到效果。

二、Flask:轻量级 Web 框架

Flask 是一个轻量级的 Python Web 框架,它提供了灵活的开发方式,适合快速开发小型项目或微服务。Flask 不像 Django 那样内置了许多功能,但它可以通过扩展来实现各种功能。

(一)Flask 项目结构

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

myflaskapp/
│
├── app.py                # 主程序文件
├── templates/            # 模板文件
│   ├── index.html
├── static/               # 静态文件

(二)创建 Flask 项目

  1. 安装 Flask

    pip install flask
    
  2. 创建主程序文件

    创建 app.py 文件:

    from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
    def index():return render_template('index.html')if __name__ == '__main__':app.run(debug=True)
    
  3. 创建模板文件

    templates 文件夹中创建 index.html 文件:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>首页</title>
    </head>
    <body><h1>欢迎来到我的 Flask 应用</h1>
    </body>
    </html>
    

(三)运行项目

python app.py

访问 http://127.0.0.1:5000 即可看到效果。

三、Django 与 Flask 的对比

特性 Django Flask
项目结构 自带复杂结构,适合大型项目 结构简单,适合小型项目
内置功能 提供丰富的内置功能,如 ORM、Admin 等 功能较少,但可通过扩展实现
开发速度 适合快速开发大型项目 灵活,适合快速开发小型项目或微服务
学习曲线 学习曲线较陡,但文档丰富 学习曲线较平缓,易于上手
社区支持 社区活跃,有大量的教程和扩展 社区活跃,有大量的教程和扩展
适用场景 适合复杂的、需要快速开发的大型项目 适合小型项目、微服务或需要高度定制化的项目

四、总结与展望

Django 和 Flask 都是优秀的 Python Web 框架,选择哪一个取决于你的具体需求。如果你需要快速开发一个功能丰富的大型项目,Django 是一个不错的选择;如果你需要开发一个小型项目或微服务,Flask 可能更适合。

无论你选择哪一个框架,Python 都能为你提供强大的支持,帮助你快速构建 Web 应用。希望本文能帮助你快速上手 Web 开发,开启你的 Web 开发之旅!

文章来源于zlibrary图书馆中《Python编程从入门到实践》书的 Python Web 框架开发章节内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/905036.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平衡树-入门

本文有一只奶龙编写,有借鉴会在其中说明。 平衡树 要了解平衡树是什么,我们需要先了解一个东西:二叉搜索树(也称二叉查找树)。二叉搜索/查找树(BST)如果我们有一颗二叉树可以进行查找,那么就可以说明其中的节点一定又有一个能够区分大小的“键值”。我们有节点来存储这…

安卓工程目录结构

根目录 根目录下有多个重要的文件和文件夹,各自承担着不同的功能。.gradle 和 .idea 这两个文件夹属于 IDE(集成开发环境)生成的文件,其中 .gradle 包含 Gradle 构建系统的配置和缓存信息;.idea 则是 IntelliJ IDEA 或者 Android Studio 所产生的项目配置文件。 app 这是安…

LLM大模型:post-train实战 - 使用GRPO微调LLM

deepseek带火了GRPO,更带火了reinforcement learning,让研究人员发现RL能在pre-train的基础上较大提升LLM的逻辑推理能力!当前,互联网高速发展二十多年产生的优质数据已经使用殆尽,所以更大规模的LLM一直难产(GPT-5现在都还没发布,优质token耗尽是核心原因之一)。市面上…

MQ 消息幂等性保证

MQ 消息幂等性保证 1. 什么是幂等性 在程序开发中,是指同一个业务,执行一次或多次对业务状态的影响是一致的。例如:根据 id 删除数据 查询数据在实际业务中,避免不了出现用户连续点击退款、重复点击删除等情况,这种情况下,就需要对多个消息进行处理,避免短时间内多次执行…

3.24 曲线/曲面积分

1 第一类曲线积分 (理解成求曲线的质量) 要把ds(弧微分)转化成dt(参数方程里面的自变量)(积分里面只留下的变量),也可以转化成dx什么的,注意ds转化成dx的公式 2 第一类曲面积分 还是先求投影,比如投影到xoy平面上,就求z=z(x,y) 2.1 普通对称性奇函数为0,偶函数*2 2.…

SmolVLM2: 让视频理解能力触手可及

一句话总结: SmolVLM 现已具备更强的视觉理解能力📺 SmolVLM2 标志着视频理解技术的根本性转变——从依赖海量计算资源的巨型模型,转向可在任何设备运行的轻量级模型。我们的目标很简单: 让视频理解技术从手机到服务器都能轻松部署。 我们同步发布三种规模的模型 (22 亿/5 亿…

React-Native开发鸿蒙NEXT-video

React-Native开发鸿蒙NEXT-video 前几周的开发,基本把一个”只读型“社区开发的差不多了。帖子列表,详情,搜索都迁移实现了,但还差了一点------视频类型帖子的展示。之前开发RN社区中,对于视频的处理用的是react-native-video,这个三方组件也已经实现了鸿蒙化,部分逻辑可…

React-Native开发鸿蒙NEXT-cookie设置

React-Native开发鸿蒙NEXT-cookie设置 应用有个积分商城,做一些积分兑换的业务,就一个基于react-native-webview开发的页面,在页面加载的时候通过js注入来设置cookie带入用户信息。 早先应甲方要求web网站关闭了,现在又要继续运行。于是就把web服务启动了,然后发现应用里积…

第六天

单词 以下是今天需学习的35个单词复习,同时前几天的单词阅读 理解文章大意,记录不认识的单词。今天这个阅读非常应当下的情景。 How to Teach Yourself Anything in Less than Three Months 如何在3个月内学习任何一件事(一) Self-education can be wonderful and frustrat…

React Native开发鸿蒙Next---富文本浏览

React Native开发鸿蒙Next---富文本浏览 最近在继续开发App剩余的社区功能。地铁的社区相对较为特殊,只有公告/政策规章/操作指南等资讯阅读功能,无法进行交互。对于原先的社区RN,除了移植适配鸿蒙,还需要做大量的功能屏蔽等改造。新的社区后台大量采用富文本进行内容编辑,…

17.指针

正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。 请看下面的实例,它将输出定义的变量地址:#include <stdio.h>int main(){int var_runoob = 10;int *p; //定义指针变量p = &var…

3.24 学习记录

实现了学习记录APP的登录注册功能