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-减,负数功能$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中,停止一个线程的方法通常有以下几种: 使用标志位停止线程: 这是一种常见的做法,即通过设置一个标志位,在线程的执行体中检查这个标志位,当标志位满足某个条件时,退出线程执行。 class M…...
使用阿里CICD流水线打包Java项目到阿里的docker镜像私仓,并自动部署到服务器启动服务
文章目录 使用阿里CICD流水线打包Java项目到阿里的docker镜像私仓,并自动部署到服务器启动服务1、功能原理实现2、将自己的Java项目通过Git上传到阿里的代码仓库中,也可以通过绑定Gitee或者GitHub账号进行导入3、创建自己的阿里云镜像私仓3、进入阿里的C…...
Mybatis的核心配置文件
MyBatis的全局配置文件mybatis-config.xml,配置内容如下: properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFa…...
四川易点慧电子商务抖音小店:安全可靠,购物新选择
随着互联网的飞速发展,电子商务已成为人们日常生活中不可或缺的一部分。在众多电商平台中,四川易点慧电子商务抖音小店以其安全可靠、服务优质的特点,逐渐赢得了消费者的信赖和好评。 一、平台背景实力雄厚 四川易点慧电子商务有限公司是一家…...
基于数据沙箱与LLM用例自愈的UI自动化测试平台
本期作者 项目参与人员: 顾伊凡、陈钰广、张又中、杨雨浩、樊执政、熊梦园、何璇、谭楠 UI自动化测试能够在一定程度上确保产品质量,尤其在降本提效的大背景下,其重要性愈发凸显。理想情况下,UI自动化测试不仅能够能帮我们规避不少…...
面试算法-117-组合总和 III
题目 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4…...
邮件接口与第三方平台的集成的方式有哪些?
邮件接口如何实现高效通信?怎么有效地利用邮件接口? 邮件接口与第三方平台的集成已经成为了企业提升工作效率、优化用户体验的关键环节。那么,邮件接口与第三方平台的集成方式究竟有哪些呢?接下来,AokSend就来探讨一下…...
qrcode插件-生成二维码
安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div,并设置id --></div> </template> <script> import QRCode from q…...
基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现
基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…...
[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction
一种利用句法依赖和词性相关性信息来过滤噪声(无关跨度)的基于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;/** 此时电源状态可能是未知的,可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…...
网络: 套接字
套接字: 在网络上进行进程间通信 网络字节序与主机字节序的转化 sockaddr sockaddr struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据,具体内容与地址族相关 };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)在没有代理的情况下,都是客户端…...
【PHP】通过PHP开启/暂停Apache、MySQL或其他服务
目录 一、前言 二、代码 一、前言 有些时候我们需要开启或暂停一些服务,比如说开启Apach或暂停MySQL服务等,最近工作中也开发了这方面的功能,记录下来怎样使用PHP语言来开启或暂停Apache、MySQL服务的运行状态。 这种方法也适用其他服务。…...
JAVA中spring介绍
Spring框架是一个开源的Java平台,它最初由Rod Johnson于2003年创建,目的是简化企业级应用的开发。Spring框架的核心特性包括控制反转(IoC)、面向切面编程(AOP)、事务管理、数据访问等。它通过提供一套综合的…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
