恩施土家族苗族自治州网站建设_网站建设公司_代码压缩_seo优化
2026/1/15 6:15:26 网站建设 项目流程

Python Web 框架的使用率仍然是 Flask、Django 和 FastAPI 之间的三强之争。所有其他框架加起来只能勉强排在第三位。下面对这三个主流框架做下比较:

  • Djanggo
    • 使用比率: 39%
    • 系统特点:全栈框架:内置 ORM、模板引擎、表单处理、用户认证等功能;开箱即用:适合快速开发复杂的 Web 应用;社区强大:有丰富的第三方库和插件。
    • 系统性能:中等。由于功能丰富,性能略低于轻量级框架,但足够应对大多数场景。
    • 适用场景:需要快速开发的全栈应用如内容管理系统(CMS)、社交网络、电子商务网站等。
  • Flask
    • 使用比率:36%
    • 系统特点:微框架:轻量级,核心功能简单,易于扩展;灵活:可以根据需求选择插件和库;学习曲线低:适合初学者和小型项目。
    • 系统性能:较高:由于轻量级设计,性能优于 Django。
    • 适用场景:小型 Web 应用、API 服务、原型开发。
  • FastAPI
    • 使用比率:25%
    • 系统特点:高性能:基于 Starlette 和 Pydantic,性能接近 Node.js 和 Go;异步支持:原生支持异步编程;自动文档:自动生成 OpenAPI 和 Swagger 文档。
    • 系统性能:极高:是目前性能最好的 Python Web 框架之一。
    • 适用场景:高性能 API 服务、微服务、实时应用。

目前纯粹的前端框架有很多如vueangularReact等,笔者不建议使用Python做web界面开发,可以使用Python开发人工智能后端后通过restful API发布接口,供第三方应用调用即可。

下面逐个介绍这几个框架并提供简单的web开发应用,只做抛砖引玉的作用,不做详细的引申,感兴趣的同学可以针对自己感兴趣的框架做进一步的学习。首先从使用率最高的Django开始。

Django是一个高级的Python Web应用框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。 Django遵循一种称为MTV(MODEL-TEMPLATE-VIEW)模式的架构模式。

主要功能

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

  1. 用于创建模型的对象关系映射;
  2. 为最终用户设计较好的管理界面;
  3. URL 设计;
  4. 设计者友好的模板语言;
  5. 缓存系统。

框架特点

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图 [4]。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:

层次职责
模型层(Model)即数据存取层。处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板层(Template)即表现层,处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图层(View)即业务逻辑层,存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

从以上表述可以看出Django 视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django 模板 仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC(MODEL-VIEW-CONTROL)中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。

至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为程序员大都在写控制层的程序。这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。

模型层(model)

通过 ORM(对象关系映射)定义数据库结构,支持主流数据库(MySQL、PostgreSQL、SQLite)。

# 示例 from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey('Author', on_delete=models.CASCADE) publish_date = models.DateField(auto_now_add=True)

说明:CharField定义字符串字段,ForeignKey关联其他模型,auto_now_add自动记录创建时间。

视图层(view)

处理业务逻辑,接收请求并返回响应(如 HTML、JSON)。

# 示例 from django.shortcuts import render from .models import Book def book_list(request): books = Book.objects.filter(author__name="鲁迅") return render(request, 'books/list.html', {'books': books})

说明:objects.filter() 执行数据库查询,render() 渲染模板。

模板层(template)

动态生成 HTML,支持模板继承和逻辑控制。

<ul> {% for book in books %} <li>{{ book.title }} - {{ book.publish_date|date:"Y-m-d" }}</li> {% endfor %}

说明{% for %}循环遍历数据,|date为过滤器格式化日期。

路由(URLConf)

将 URL 映射到视图函数,支持动态参数和正则表达式。

from django.urls import path from . import views urlpatterns = [ path('books/', views.book_list, name='book-list'), path('books/<int:book_id>/', views.book_detail), ]

说明:int:book_id捕获整数参数,name用于反向解析 URL。

运行环境

Django可以运行在ApacheNginx等Web服务器上,也可以运行在支持WSGIFastCGI的服务器上。支持多种数据库,已经支持Postgresql,MySql, Sqlite3,Oracle。Google App Engine也支持Django的某些部分,国内支持的平台有新浪应用引擎(Sina App EngineSAE),百度应用引擎(Baidu App EngineBAE)。

设计模式

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

  • 对象关系映射 (object-relational mappingORM):以Python类形式定义的数据模型,ORM将模型与关系数据库连接起来,将得到一个非常容易使用的数据库API,同时也可以在Django中使用原始的SQL语句。
  • URL 分派:使用正则表达式匹配URL,可以设计任意的URL,没有框架的特定限定。一样灵活。
  • 模版系统:使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。
  • 表单处理:可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从定义的模型实例生成相应的表单。
  • Cache系统:可以挂在内存缓冲或其它的框架实现超级缓冲 实现所需要的粒度。
  • 会话(session),用户登录与权限检查,快速开发用户会话功能。
  • 国际化:内置国际化系统,方便开发出多种语言的网站。
  • 自动化的管理界面:不需要花大量的工作来创建人员管理和更新内容。Django自带一个admin site,类似于内容管理系统

依赖安装

pip安装

打开命令行窗口,输入以下命令安装官方发布的发行版本:

python -m pip install django

这种方式会默认安装最新版的Django框架,如果要安装指定版本,使用以下命令:

python -m pip install django=[x.y]

其中,x.y表示想要安装的Django版本号。

源码安装

首先,下载django的压缩包

git clone https://github.com/django/django.git

下载完成之后,将在本地创建了django目录并将源码下载到该目录下。进入下载根目录,执行以下程序:

python -m -pip install -e django/

开发第一个应用

创建第一个django项目

如果这是你第一次使用 Django 的话,需要做一些初始化设置。也就是说,你需要用一些自动生成的代码配置一个 Django项目 —— 即一个 Django 项目实例需要的设置项集合,包括数据库配置、Django 配置和应用程序配置。

打开命令行,cd到一个你想放置你代码的目录,然后运行以下命令:

django-admin startproject mysite

这行代码将会在当前目录下创建一个mysite目录。如果命令失败了,查看 运行django-admin时遇到的问题,可能能给你提供帮助。

注意:

  • 你得避免使用 Python 或 Django 的内部保留字来命名你的项目。具体地说,你得避免使用像django(会和 Django 自己产生冲突)或test(会和 Python 的内置组件产生冲突)这样的名字。
  • 如果你曾经是原生 PHP 程序员(没有使用过现代框架),你可能会习惯于把代码放在 Web 服务器的文档根目录(诸如/var/www)。当使用 Django 时不需要这样做。把所有 Python 代码放在 Web 服务器的根目录不是个好主意,因为这样会有风险。比如会提高人们在网站上看到你的代码的可能性。这不利于网站的安全。把你的代码放在文档根目录以外的某些地方吧,比如 /home/mycode。

如果项目创建成功,目录结构将如下所示:

mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py

这些目录和文件的用处是:

  • 最外层的:file: mysite/ 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
  • manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。
  • 里面一层的mysite/目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如mysite.urls).
  • mysite/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
  • mysite/settings.py:Django 项目的配置文件。如果你想知道这个文件是如何工作的,
  • mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。
  • mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
开发简易服务器

让我们来确认一下你的 Django 项目是否真的创建成功了。如果你的当前目录不是外层的mysite目录的话,请切换到此目录,然后运行下面的命令:

$ python manage.py runserver

你应该会看到如下输出:

Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. 八月 01, 2018 - 15:50:53 Django version 2.0, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

你刚刚启动的是 Django 自带的用于开发的简易服务器,它是一个用纯 Python 写的轻量级的 Web 服务器。我们将这个服务器内置在 Django 中是为了让你能快速的开发出想要的东西,因为你不需要进行配置生产级别的服务器(比如 Apache)方面的工作,除非你已经准备好投入生产环境了。

注意:千万不要将这个服务器用于和生产环境相关的任何地方。这个服务器只是为了开发而设计的。(我们在 Web 框架方面是专家,在 Web 服务器方面并不是。)

现在,服务器正在运行,浏览器访问https://127.0.0.1:8000/。你将会看到一个“祝贺”页面,随着一只火箭发射,服务器已经运行了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询