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

Python---常用的web框架

目录

  • Django
    • 创建Django项目
    • 启动Django项目
    • 引入APP
    • 视图函数
      • 例如纯文本
      • JSON格式数据
      • 重定向
      • 渲染页面
      • 返回错误提示
  • Flask
  • Pyramid
  • Tornado

Django

  • 特点:Django是一个全功能的Web框架,提供了许多内置的功能和工具,如ORM、表单处理、认证等。它的设计理念是“一切都包含在框架中”,因此适合构建复杂的、大型的Web应用程序。
  • 优势:Django具有强大的开发效率和稳定性,提供了完善的文档和活跃的社区支持。它还有丰富的第三方插件和扩展,可快速构建功能丰富的Web应用。

创建Django项目

【假设说现在创建了一个名为mysite的项目:】

django-admin startproject mysite
# startproject 是一个命令,表示创建一个新的Django项目

【那么这个文件的tree为:】

mysite
{manage.py[这是管理项目文件,用于与Django项目进行交互,例如运行开发服务器、执行数据库迁移等]mysite{_init_.py[这是一个空文件,用于将项目目录标记为Python包]settings.py[这是项目的配置文件,包含了项目的各种设置,如数据库配置【用户名、密码等等】、静态文件路径、应用程序列表等]urls.py[这是项目的URL配置文件,定义了URL与视图函数之间的映射关系,用于处理用户请求]asgi.py[这是一个用于异步部署项目的入口文件,用于与ASGI服务器进行通信【本质:编写socket处理网络请求】]wsgi.py[这是一个用于【同步】部署项目的入口文件,用于与Web服务器进行通信【本质:编写socket处理网络请求】]}
}

启动Django项目

# 进入manage.py所在的上层文件夹
python manage.py runserver

引入APP

  • 通常会在django项目中创建app,在app中编写项目中的具体业务
# 进入manage.py所在的上层文件夹
python3 manage.py startapp web

在这里插入图片描述

  • _init_.py:这是一个空文件,用于将app文件夹标识为Python包。
  • admin.py:在这个文件中,可以注册模型(Model)到Django后台管理界面,以便在后台管理中对模型进行增删改查操作。
  • apps.py:这个文件定义了应用程序的配置类,包括应用程序的名称、标签和其他配置选项。
  • models.py:在这个文件中,你可以定义应用程序的模型(Model),即数据库表的结构和字段**[类 -> SQL]**。
  • tests.py:这个文件用于编写应用程序的单元测试代码,以确保应用程序的功能正常运行。
  • views.py:在这个文件中,可以定义应用程序的视图(View)函数,即处理HTTP请求并返回响应的函数或类。
  • migrations文件夹:是用于存放应用程序的数据库迁移文件的地方,它是Django中管理数据库模式变更的重要组成部分。
    【在Django中,数据库迁移是一种管理数据库模式变更的机制。当在应用程序的models.py文件中修改了模型(Model)的结构或字段时,需要创建一个数据库迁移文件来记录这些变更。这个迁移文件包含了数据库模式的变更操作,例如创建表、添加字段、修改字段等。

视图函数

Django 项目中,视图函数通常会返回不同类型的响应,常见的返回值包括:

例如纯文本

  • HttpResponse:视图函数可以返回一个 HttpResponse 对象,用于返回包含指定内容的 HTTP 响应。可以是纯文本、HTML 内容或者其他数据。例如:
from django.http import HttpResponsedef my_view(request):return HttpResponse("Hello, World!")

JSON格式数据

  • JsonResponse:当需要返回 JSON 格式的数据时,视图函数可以返回一个 JsonResponse 对象。这通常用于 AJAX 请求或者提供 API 服务。例如:
from django.http import JsonResponsedef my_json_view(request):data = {'key': 'value'}return JsonResponse(data)

重定向

  • HttpResponseRedirect:如果需要重定向到另一个 URL,可以返回一个 HttpResponseRedirect 对象。例如:
from django.http import HttpResponseRedirectdef my_redirect_view(request):return HttpResponseRedirect('/new_url/')

渲染页面

  • Render:视图函数也可以使用模板来渲染页面,通过返回 render 函数来实现。render 函数会渲染指定的模板,并将上下文数据传递给模板。【优先去setting.py 文件中寻找:TEMPLATES"DIRS": [],其次是去注册了的app目录下的TEMPLATES文件夹】例如:
from django.shortcuts import renderdef my_template_view(request):context = {'name': 'Alice'}return render(request, 'my_template.html', context)

返回错误提示

  • HttpResponseNotFound、HttpResponseServerError 等:Django 还提供了一些特定状态码的响应对象,比如 HttpResponseNotFound 用于返回 404 错误页面,HttpResponseServerError 用于返回 500 错误页面等。

Flask

  • 特点:Flask是一个轻量级的Web框架,它的设计简单、灵活,没有过多的约束。它提供了基本的功能,如路由、模板引擎等,但其他高级功能需要使用第三方扩展。
  • 优势:Flask非常适合构建小型的、简单的Web应用,它的学习曲线较低,灵活性高,可以根据需求选择合适的扩展。同时,Flask的性能也比较好,适合处理高并发的请求。

Pyramid

  • 特点:Pyramid是一个通用的Web框架,它的设计目标是简单、可扩展和可维护。它提供了灵活的URL路由、视图、模板等功能,同时也支持各种第三方库和工具。
  • 优势:Pyramid具有良好的可扩展性和灵活性,可以根据项目的需求选择合适的组件和工具。它的文档详细,社区活跃,有很多示例和教程可供参考。

Tornado

  • 特点:Tornado是一个高性能的Web框架,它使用非阻塞的I/O模型,适合处理高并发的请求。它还提供了异步的特性,可以方便地处理长连接和实时通信。
  • 优势:Tornado的性能非常出色,适合构建需要高并发和实时性的Web应用。它还有一些内置的工具和库,如异步HTTP客户端、WebSocket等,方便开发者进行开发。

相关文章:

Python---常用的web框架

目录 Django创建Django项目启动Django项目引入APP视图函数例如纯文本JSON格式数据重定向渲染页面返回错误提示 FlaskPyramidTornado Django 特点:Django是一个全功能的Web框架,提供了许多内置的功能和工具,如ORM、表单处理、认证等。它的设计…...

Jenkins Docker 部署指南

Jenkins Docker 部署指南 本文档为您提供了在 Docker 容器中部署 Jenkins 的全面指南,使用的是阿里云的容器镜像服务。请仔细遵循以下步骤以确保成功设置。 前提条件 主机上安装了 Docker。拥有阿里云容器镜像服务的账户。 部署步骤 1. 登录阿里云容器镜像服务…...

海外媒体宣发:商务视频推广数字化变革全解析-华媒舍

在当今数字化时代,商务视频推广正迎来一场革命性的数字化变革。本文将为您解析这场变革的核心元素和相关内容。 商务视频推广 商务视频推广是一种通过视频形式来宣传和推广产品、服务或品牌的方法。传统的推广方式主要是通过文字和图片进行,而商务视频推…...

文件服务: 功能介绍

文章目录 一、需求背景二、核心功能1、功能要求2、非工能要求 三、存储方式四、实现方式五、核心技术 一、需求背景 二、核心功能 1、功能要求 文件上传文件预览文件分片上传文件分片合并文件秒传文件断点续传文件下载 2、非工能要求 高扩展性:方便添加新的存储…...

php 快速入门(二)

一、运算符 1.1 算术运算符 运算描述举例加$a$b-减&#xff0c;负数功能$a-$b*乘$a*$b/除$a/$b%取余$a%$b <?php$s1 3;$s2 5;$res1 $s1$s2;$res2 $s1-$s2;$res3 $s1*$s2;$res4 $s1/$s2;$res5 $s1%$s2;echo $res1."<br>";echo "${res2}<b…...

java面试题|(1)多线程如何停止一个线程?

在Java中&#xff0c;停止一个线程的方法通常有以下几种&#xff1a; 使用标志位停止线程&#xff1a; 这是一种常见的做法&#xff0c;即通过设置一个标志位&#xff0c;在线程的执行体中检查这个标志位&#xff0c;当标志位满足某个条件时&#xff0c;退出线程执行。 class M…...

使用阿里CICD流水线打包Java项目到阿里的docker镜像私仓,并自动部署到服务器启动服务

文章目录 使用阿里CICD流水线打包Java项目到阿里的docker镜像私仓&#xff0c;并自动部署到服务器启动服务1、功能原理实现2、将自己的Java项目通过Git上传到阿里的代码仓库中&#xff0c;也可以通过绑定Gitee或者GitHub账号进行导入3、创建自己的阿里云镜像私仓3、进入阿里的C…...

Mybatis的核心配置文件

MyBatis的全局配置文件mybatis-config.xml&#xff0c;配置内容如下&#xff1a; properties&#xff08;属性&#xff09;settings&#xff08;全局配置参数&#xff09;typeAliases&#xff08;类型别名&#xff09;typeHandlers&#xff08;类型处理器&#xff09;objectFa…...

四川易点慧电子商务抖音小店:安全可靠,购物新选择

随着互联网的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。在众多电商平台中&#xff0c;四川易点慧电子商务抖音小店以其安全可靠、服务优质的特点&#xff0c;逐渐赢得了消费者的信赖和好评。 一、平台背景实力雄厚 四川易点慧电子商务有限公司是一家…...

基于数据沙箱与LLM用例自愈的UI自动化测试平台

本期作者 项目参与人员&#xff1a; 顾伊凡、陈钰广、张又中、杨雨浩、樊执政、熊梦园、何璇、谭楠 UI自动化测试能够在一定程度上确保产品质量&#xff0c;尤其在降本提效的大背景下&#xff0c;其重要性愈发凸显。理想情况下&#xff0c;UI自动化测试不仅能够能帮我们规避不少…...

面试算法-117-组合总和 III

题目 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4…...

邮件接口与第三方平台的集成的方式有哪些?

邮件接口如何实现高效通信&#xff1f;怎么有效地利用邮件接口&#xff1f; 邮件接口与第三方平台的集成已经成为了企业提升工作效率、优化用户体验的关键环节。那么&#xff0c;邮件接口与第三方平台的集成方式究竟有哪些呢&#xff1f;接下来&#xff0c;AokSend就来探讨一下…...

qrcode插件-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…...

基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现

基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…...

[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

一种利用句法依赖和词性相关性信息来过滤噪声&#xff08;无关跨度&#xff09;的基于span方法。 会议EMNLP 2023作者Pan Li, Ping Li, Kai Zhang团队Southwest Petroleum University论文地址https://aclanthology.org/2023.emnlp-main.17/代码地址https://github.com/bert-ply…...

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…...

网络: 套接字

套接字: 在网络上进行进程间通信 网络字节序与主机字节序的转化 sockaddr sockaddr struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据&#xff0c;具体内容与地址族相关 };sockaddr_in :主要是地址类型, 端口号, IP地址. 基于IPv4编程…...

Day57-Nginx反向代理与负载均衡初步应用

Day57-Nginx反向代理与负载均衡初步应用 1. Nginx代理介绍2. Nginx代理常见模式2.1 正向代理2.2 反向代理2.3 正向与反向代理区别 3. Nginx代理支持协议4. Nginx反向代理场景实践5. lb01安装部署nginx 1. Nginx代理介绍 1&#xff09;在没有代理的情况下&#xff0c;都是客户端…...

【PHP】通过PHP开启/暂停Apache、MySQL或其他服务

目录 一、前言 二、代码 一、前言 有些时候我们需要开启或暂停一些服务&#xff0c;比如说开启Apach或暂停MySQL服务等&#xff0c;最近工作中也开发了这方面的功能&#xff0c;记录下来怎样使用PHP语言来开启或暂停Apache、MySQL服务的运行状态。 这种方法也适用其他服务。…...

JAVA中spring介绍

Spring框架是一个开源的Java平台&#xff0c;它最初由Rod Johnson于2003年创建&#xff0c;目的是简化企业级应用的开发。Spring框架的核心特性包括控制反转&#xff08;IoC&#xff09;、面向切面编程&#xff08;AOP&#xff09;、事务管理、数据访问等。它通过提供一套综合的…...

Meixiong Niannian画图引擎与STM32CubeMX结合:嵌入式GUI开发新思路

Meixiong Niannian画图引擎与STM32CubeMX结合&#xff1a;嵌入式GUI开发新思路 1. 引言 嵌入式设备的用户界面设计一直是个让人头疼的问题。传统的做法要么是找专业美工设计图片资源&#xff0c;要么是用代码硬编码绘制界面&#xff0c;前者成本高效率低&#xff0c;后者效果…...

如何3步完成语雀文档迁移:新手终极免费指南

如何3步完成语雀文档迁移&#xff1a;新手终极免费指南 【免费下载链接】yuque-exporter export yuque to local markdown 项目地址: https://gitcode.com/gh_mirrors/yuq/yuque-exporter 还在为语雀平台策略调整而烦恼吗&#xff1f;担心自己的创作内容无处安放&#x…...

nli-distilroberta-base实际项目:新闻摘要与原文蕴含关系自动评估

nli-distilroberta-base实际项目&#xff1a;新闻摘要与原文蕴含关系自动评估 1. 项目概述 在新闻媒体和内容创作领域&#xff0c;如何快速评估一篇摘要是否准确反映了原文内容一直是个挑战。传统的人工审核方式效率低下且成本高昂。nli-distilroberta-base项目正是为解决这一…...

C语言入门必看:2026年嵌入式开发选C还是C++?

一、在2026年的时候&#xff0c;进行编程选择语言可千万别胡乱去选&#xff01;C语言、C语言、C#语言&#xff0c;它们有着相同源头却有着不同命运&#xff0c;选对了语言才是获得高薪的关键所在&#xff01; 对于编程领域而言&#xff0c;C、C、C#此三门如同“同门兄弟”般的语…...

济南精神心理专科:如何识别躯体化障碍的早期信号

济南躯体化障碍疾病就医选择难题在济南&#xff0c;面对躯体化障碍疾病的朋友最关心的是隐私和靠谱。选择一家好的医院至关重要&#xff0c;尤其是看躯体化障碍一定要选专科专业医院。这类医院不仅在专业诊疗上更有优势&#xff0c;还能提供更好的隐私保护和服务体验。本文将基…...

OpenClaw安全加固指南:Phi-3-vision本地化部署的权限控制

OpenClaw安全加固指南&#xff1a;Phi-3-vision本地化部署的权限控制 1. 为什么需要安全加固&#xff1f; 上周我在调试一个自动处理发票的OpenClaw流程时&#xff0c;差点酿成大祸。这个流程需要读取财务部门的加密压缩包&#xff0c;解压后提取PDF发票进行OCR识别&#xff…...

多层PCB内部结构与HDI技术深度解析

1. 多层PCB内部结构全解析作为一名硬件工程师&#xff0c;第一次拆解十层PCB板时&#xff0c;那种震撼感至今难忘。密密麻麻的过孔像微型城市的地下管网&#xff0c;精密排布的走线如同错综复杂的立体交通网。今天我就用最直观的立体解剖图&#xff0c;带你看透各种叠层结构的P…...

3D元器件库在PCB设计中的关键作用与应用

1. 为什么你需要一套完整的3D元器件库作为一名电子工程师&#xff0c;我深知在PCB设计过程中&#xff0c;3D元器件库的重要性。传统的2D设计虽然能满足基本需求&#xff0c;但在实际生产装配时往往会遇到各种意想不到的机械干涉问题。记得我刚开始做硬件设计时&#xff0c;就曾…...

千问3.5-27B知识库应用:OpenClaw变身技术问答助手

千问3.5-27B知识库应用&#xff1a;OpenClaw变身技术问答助手 1. 为什么需要本地化技术问答助手&#xff1f; 去年我在开发一个开源项目时&#xff0c;遇到了一个奇怪的Docker网络问题。当时在Stack Overflow上搜索了半天&#xff0c;找到的答案要么过时&#xff0c;要么不适…...

社媒爆款流水线:手把手教你用Runway Gen-4.5的A/B测试功能,批量生产TikTok热门视频

社媒爆款流水线&#xff1a;用Runway Gen-4.5打造数据驱动的短视频生产引擎 在短视频内容爆炸式增长的今天&#xff0c;一个残酷的现实是&#xff1a;99%的内容在发布后的24小时内就会沉入算法深渊。那些能突破重围的爆款视频&#xff0c;往往不是偶然灵感的产物&#xff0c;而…...