Django介绍,安装,创建
文章目录
- 1. web应用程序
- 1.1 什么是web?
- 1.2 web应用程序的优点
- 1.3 web应用程序的缺点
- 1.4 什么是web框架?
- 2. 手撸web框架
1. web应用程序
1.1 什么是web?
Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可,不需要再安装其他软件
案例:
淘宝网、京东网、博客园、等都是基于web应用的程序
应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式
1.2 web应用程序的优点
- 你所需要的只是一个适用的浏览器
- 节省硬盘空间
- 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
- 过跨平台使用的例如Windows,Mac,Linux等等
1.3 web应用程序的缺点
严重依赖服务端的正常运行,服务端一旦出问题、客户端里面收到影响。
1.4 什么是web框架?
Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。
说简单点就是web框架用于搭建Web应用程序,免去不同Web应用相同代码部分的重复。
2. 手撸web框架
web应用程序是B/S架构的,所以、我们需要自己写一个服务端、然后让浏览器作为我们的客户端即可
怎么样去写一个服务端? socket编程HTTP协议的特性:
1. 四大特性# 基于请求响应# 基于TCP协议之上的应用层协议# 无状态# 短链接2. 请求数据格式请求首行(请求方式、协议、版本号、路径)请求头\r\n请求体(get请求方式是没有请求体的、POST请求方式才有请求体)
3. 响应数据格式响应首行()响应头\r\n响应体()
4. 响应状态码1xx2xx3xx4xx5xx## 图解HTTP协议(漫画版本的) 图解TCP协议
# 请求方式
GET POST"""问题来了,如何做到在网址栏中输入什么后缀就返回什么后缀?"""
解决的思路:1. 服务端要知道你网址栏里输入的是什么后缀2. 服务端做判断,然后做对应的返回
# 服务端如何知道客户端输的的是什么后缀# 当前的服务端存在的问题?
1. socket部分需要我们自己每次都要写
2. 我们需要自己每次处理HTTP格式的数据,自己转码、自己切分、自己取值等
3. 没有解决高并发问题# 怎么样优化以上存在的问题呢?
wsgiref模块的使用
wsgiref服务器---------->uwsgi服务器(uwsgi)-------->Nginx服务器+uwsgi服务器wsgiref模块是一个内置的模块,直接可以拿来使用,无需安装
它帮助我们封装了socket部分,另外,它也解决了部分的高并发问题,但是,它能够解决的并发量并不高
他们也会帮我们把HTTP格式的数据做封装处理,也就是说不需要我们在自己处理views.py # 主要用来写业务逻辑的,它也称为是视图文件
urls.py # 主要用来写后缀和视图函数的对应关系,它也称为是路由文件
template # 存储项目中用到的模板文件,html文件,模板文本,提供了一些模板语法."""每一个框架都应用有一个入口文件,Django也不例外"""
from wsgiref.simple_server import make_serverHOST = "127.0.0.1"
PORT = 9001def index():return "from index"def home():return "from home"urls = {"/index": index,"/home": home
}def run(env, response):""":param env: 请求来的时候,携带的请求数据都在这个里面:param response: 服务端给客户响应的数据:return:返回给客户端显示的"""response("200 ok", [])current_path = env.get("PATH_INFO")if current_path in urls:return [urls.get(current_path)().encode("utf-8")]else:return [b'404 not found']if __name__ == '__main__':# 创建wsgiref服务器my_server = make_server(HOST, PORT, run)# 监听服务器my_server.serve_forever()
Python中得主流框架:Django框架:最主流的,市场占用率90%以上,笨重的框架,里面自带了很重的模块,不适用于小项目,类似于航空母舰falsk框架:轻量级的,小而美,自带的功能比较少,需要安装很多的第三方模块,当你安装的模块足够多的时候,也差不多跟Django差不多了tornado框架:异步非阻塞、高性能、学这个框架成本有点高、解决的并发量挺高的,它一般用在特殊的场景sanic框架:fastapi框架:它主要用来写一些接口,不出来页面,它只负责写业务逻辑## 主要就来学习Django的使用
如何使用Django:
1. 需要先安装: pip install django
2. 版本的问题django1.x: 以前的老项目在使用,它跟2.x的版本区别不是特别大django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.xdjango3.x: 新版本了,现在有不少的项目确实在选择3.x的版本# 比如:drf框架要求django的版本必须是2以上,不支持1的版本
讲1.x和2.x的版本注意讲1.x,一块再去看2的版本3. django的版本要和你的Python的版本要匹配,django3用个2.7版本,不行
django2----->python3.6以上
django1----->python3.64. 如何创建django项目# 先切换路径到你想存储的位置命令行创建:django-admin startproject 项目名称django-admin startproject myfirstpycharm创建项目FileNew projectdjango...
5. 注意事项:1. 项目名称必须是英文,不能是中文2. 一个pycharm窗口只打开一个django项目
6. 如何启动项目# 先把路径切到跟manage.py同级目录下面命令行启动python3 manage.py runserverpython3 manage.py runserver 8001
'''Next, start your first app by running python manage.py startapp [app_label].'''7. 创建应用python manage.py startapp 应用名python manage.py startapp app01# 创建完应用之后,还要做一件非常重要的事情,就是注册应用, 如果没有注册,创建出来也没用**************************************************************************INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',]**************************************************************************
应用
Django框架就类似于是一所大学,一所大学也要有二级学院
应用就类似于是二级学院,一个Django框架至少要有一个应用taobaouserorderaddress"""应用名要做到见名知意,符合变量的命名规则即可,但是,教学使用app01 02 03..."""
主要文件的介绍
mysecond # 项目名称app01 # 应用名称migrations # 它是迁移数据的记录__init__.pyadmin.py # django自带的后台管理系统apps.py # 暂且忽略,写一些注册的东西models.py # 模型层,跟数据库打交道的,以后创建表就在这里写tests.py # 测试脚本views.py # 视图文件,主要用来写核心的业务逻辑的mysecond__init__.pysettings.py # Django的全局配置文件urls.py # 路由文件,写地址的后缀和视图函数的对应关系wsgi.py # wsgiref服务器templates # 存储HTML文件的db.sqlite3 # Django自带的小型数据库manage.py # Django的启动文件,入口文件
相关文章:
Django介绍,安装,创建
文章目录 1. web应用程序1.1 什么是web?1.2 web应用程序的优点1.3 web应用程序的缺点1.4 什么是web框架? 2. 手撸web框架 1. web应用程序 1.1 什么是web? Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可,不需要再安装其他软件 案…...
Java通过javacv获取视频、音频、图片等元数据信息(分辨率、大小、帧等信息)
相信我们都会或多或少需要给前端返回视频或者音频的一些信息,那么今天这篇文章通过Java语言使用javacv来获取视频、音频、图片等元数据信息(分辨率、大小、帧等信息) 一、首先导入依赖 可以先导入javacv/javacv-platform依赖,由于依赖比较大,所以我们可以先去除部分不需…...
flask和fastapi的区别以及demo实现
flask和fastapi的区别以及demo实现 flask和fastapi的区别fastapi简单demoFastAPI包括全局异常捕捉和参数验证的demoflask和fastapi的区别 Flask:Flask是一个轻量级的Web框架,它提供了最基本的工具,可以自由选择其他库和组件来构建应用。灵活性:Flask允许用户自由选择数据库、…...

python特殊循环队列_队中元素个数代替队尾指针
对于循环队列来说,如果知道队头指针和队中元素个数,则可以计算出队尾指针。也就是说,可以用队中元素个数代替队尾指针。设计出这种循环队列的判队空、进队、出队和取队头元素的算法。 本例的循环队列包含data 数组、队头指针 front和队中元素…...

什么是观察者模式?用 Python 如何实现 Observer(观察者或发布订阅)对象行为型模式?
什么是观察者模式? 观察者模式(Observer pattern)是一种行为型设计模式,它允许对象之间建立一种一对多的依赖关系,当一个对象的状态发生变化时,其相关依赖对象都会得到通知并自动更新。 在观察者模式中&am…...

pytorch直线拟合
目录 1、数据分析 2、pytorch直线拟合 1、数据分析 直线拟合的前提条件通常包括以下几点: 存在线性关系:这是进行直线拟合的基础,数据点之间应该存在一种线性关系,即数据的分布可以用直线来近似描述。这种线性关系可以是数据点…...
相机传感器
相机的传感器大小通常用英寸(1英寸2.54厘米)来表示。例如:全画幅相机的传感器大小为:36mm*24mm,称为 35mm全画幅。 几分之一英寸 所谓的 1/2.7,1/2.5等等,里面的分子1是一个标准,分…...
大语言模型的关键技术
大语言模型的关键技术: 经过漫长的发展,LLM 进化到了当前的状态——通用且有能力的学习者。在这个过程中,人们提出了许多重要的技术,大大提升了 LLM 的能力。在此,我们简要列举了几种重要的技术,这些技术&a…...

uniapp使用vur-cli新建项目并打包
新建项目 npm install -g vue/cli vue create -p dcloudio/uni-preset-vue my-project选择默认模板npm run dev:h5 运行 安装sass和uview (npm安装失败) bug:使用uni.scss中的变量或样式,<style lang"scss"> 必…...

后台管理系统解决方案-中大型-Vben Admin
后台管理系统解决方案-中大型-Vben Admin 官网 Vben Admin 在线演示 Vben Admin 为什么选择它 github现有20K星,并且它有个可视化生成表单,我很喜欢 快速开始 # 拉取代码 git clone https://github.com/vbenjs/vue-vben-admin-doc# 安装依赖 yarn#…...

通俗理解repartition和coalesce区别
官方的解释 reparation 返回一个具有恰好numPartitions分区的新RDD。 可以增加或减少此RDD中的并行级别。在内部,reparation会使用shuffle来重新分发的数据。 如果要减少此RDD中的分区数量,请考虑使用coalesce,这样可以避免执行shuffle。 coalesce 返回一个新的RDD,该RDD被…...

优雅设计之美:实现Vue应用程序的时尚布局
本文为翻译文章,原文链接: ** https://fadamakis.com/clean-layout-architecture-for-vue-applications-a738201a2a1e 前言 页面布局是减少代码重复和创建可维护且具有专业外观的应用程序的基本模式。如果使用的是Nuxt,则可以提供开箱即用…...

05预测识别-依托YOLO V8进行训练模型的识别——对视频中的目标进行跟踪统计
上文中详细介绍了如何对视频进行抽帧,并对帧的图像进行目标识别。但在日常工作中,我们也会遇到需要对目标进行跟踪统计的情况,比如我们需要连续统计某一类目标有多少个的时候,如果单纯从帧中抽取图像的话,系统将无法判断是否为同一目标,从而造成目标数量统计的重复,导致…...
Android Studio(意图Intent)
前言 意图的作用:页面的跳转(从一个页面跳转到另一个页面)。 意图的创建:需要哪些参数?首先,从哪个页面跳转到哪个页面;其二,跳转到另一个页面需要携带数据吗。 下面介绍顺序&#x…...

Bean作用域
从笔者之前的博客,我们可以看出 Spring 是⽤来读取和存储 Bean,因此在 Spring 中 Bean 是最核⼼的操作 资源,所以接下来我们深⼊学习⼀下 Bean 对象:Bean作用域! 限定程序中变量的可用范围叫做作用域!或者…...
YOLOV5----修改损失函数-SE
主要修改yolo.py、yolov5s.yaml及添加SE.py 一、SE.py import numpy as np import torch from torch import nn from torch.nn import initclass SEAttention(nn.Module):def __init__(self, channel=512...

Mybatis(一)
1. Mybatis简介 MyBatis下载地址 1.1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github…...
使用Go构建一个Postgres流平台
使用 Go 通道从拉推模型转向更高效的流方法。这通过重叠拉取和推送阶段来提高性能,减少总体处理时间和延迟。 Go通道提供数据同步、资源管理和并发处理。它们允许 goroutine 安全地通信和交换数据。这些源实现了每秒 10-12k 事务的吞吐量,最小延迟为 1-…...
QT基础与细节理解
前言 本博客旨在记录QT学习过程中的一些细节知识理解,由于问题的产生并非成体系,所以前期的记录可能会无序一些。烦请读者参阅目录进行快速的问题定位与跳转 QT基础与细节理解 前言正文部分QT基础1:正确理解: QWidget(parent), ui(new Ui::u…...

【MySQL数据库】 六
本文主要介绍了数据库原理中数据库索引和事务相关概念. 一.索引 在查询表的时候,最基本的方式就是遍历表,一条一条筛选 . 因此,就可以给这个表建立索引,来提高查找的速度 比如,按照id建立索引 在数据库上额外搞一个空间维护一些id 相关的信息, id:1 表的某个位置 id:2 …...

《Brief Bioinform》: 鼠脑单细胞与Stereo-seq数据整合算法评估
一、写在前面 基因捕获效率、分辨率一直是空间转录组细胞类型识别的拦路虎,许多算法能够整合单细胞(single-cell, sc)或单细胞核(single-nuclear, sn)数据与空间转录组数据,从而帮助空转数据的细胞类型注释。此前我们介绍过近年新出炉的Stereo-seq平台&…...

【论文解读】Toolformer: 语言模型自学使用工具
1st author: Timo Schick - Google Scholar paper: Toolformer: Language Models Can Teach Themselves to Use Tools | OpenReview NeurIPS 2023 oral code: lucidrains/toolformer-pytorch: Implementation of Toolformer, Language Models That Can Use Tools, by…...

NLP学习路线图(二十七):Transformer编码器/解码器
一、Transformer概览:抛弃循环,拥抱注意力 传统RNN及其变体(如LSTM、GRU)处理序列数据时存在顺序依赖的瓶颈:必须逐个处理序列元素,难以并行计算,且对长程依赖建模能力较弱。Transformer的革命…...
基于Flask框架的前后端分离项目开发流程是怎样的?
基于Flask框架的前后端分离项目开发流程可分为需求分析、架构设计、并行开发、集成测试和部署上线五个阶段。以下是详细步骤和技术要点: 一、需求分析与规划 1. 明确项目边界 功能范围:确定核心功能(如用户认证、数据管理、支付流程&#…...
分页查询的实现
第一步:导入pom依赖 <!--配置PageHelper分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version><exclusions>…...

Shell 命令及运行原理 + 权限的概念(7)
文章目录 Shell 命令以及运行原理(4-1.22.08)Linux权限的概念1. 什么是权限2. 认识人(普通用户,root用户)以及两种用户的切换认识普通用户和root用户两种用户之间的切换指令提权 3. 文件的属性解析 权限属性指令ll显示…...
动态IP与静态IP:数字世界的“变脸术”与“身份证”
目录 动态IP:互联网的“游牧民族” 静态IP:数字世界的“常驻公民” 动态VS静态:场景驱动的选择逻辑 未来演进:IP地址的“液态化”趋势 选型指南:没有最好,只有最合适 在互联网的海洋里,每个…...

Cursor快速梳理ipynb文件Prompt
1. 整体鸟瞰 请在不运行代码的前提下,总结 <文件名.ipynb> 的主要目的、核心逻辑流程和输出结果。阅读整个项目目录,列出每个 .ipynb / .py 文件的角色,以及它们之间的数据依赖关系(输入→处理→输出)。2. 结构…...
学习记录aigc
1、DIT https://zhuanlan.zhihu.com/p/683612528 DiT最大的创新点是将Transformer引入到了扩散模型中,并完全抛弃了CNN。但是DiT并不是第一个引入Transformer的,例如之前的U-ViT,UniDiffuser等都尝试了将Transformer引入到扩散模型中。至于…...
C++单例模式教学指南
C单例模式完整教学指南 📚 目录 [单例模式基础概念][经典单例实现及问题][现代C推荐实现][高级话题:双重检查锁][实战应用与最佳实践][总结与选择指南] 1. 单例模式基础概念 1.1 什么是单例模式? 单例模式(Singleton Pattern&…...