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

web应用程序、Django框架的学习

web应用程序

什么是web?

Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可,不需要再安装其他软件
案例:
    淘宝网、京东网、博客园、等都是基于web应用的程序

    应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式

                   

Web应用程序的优点

1. 你所需要的只是一个适用的浏览器
2. 节省硬盘空间
3. 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
4. 过跨平台使用的例如Windows,Mac,Linux等等

Web应用程序的缺点

严重依赖服务端的正常运行、服务端一旦出问题、客户端里面受到影响

什么是web框架:

别人写好的框架(就是一堆目录和文件),我们只需要在固定的位置写代码即可

手写web框架

web应用程序是B/S架构的,所以、我们需要自己写一个服务端、然后让浏览器作为我们的客户端即可
怎么样去写一个服务端? socket编程

HTTP协议的特性:

1. 四大特性:

       基于请求响应
       基于TCP协议之上的应用层协议
       无状态
       短链接

2. 请求数据格式
       请求首行(请求方式、协议、版本号、路径)
       请求头
        \r\n
       请求体(get请求方式是没有请求体的、POST请求方式才有请求体)

3. 响应数据格式
        响应首行()
        响应头
        \r\n
        响应体()
4. 响应状态码
        1xx
        2xx
        3xx
        4xx
        5xx

 图解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也不例外

Django框架的学习

Python中得主流框架:

    Django框架:最主流的,市场占用率90%以上,笨重的框架,里面自带了很重的模块,不适用于小项目,类似于航空母舰
    falsk框架:轻量级的,小而美,自带的功能比较少,需要安装很多的第三方模块,当你安装的模块足够多的时候,也差不多跟Django差不多了
    tornado框架:异步非阻塞、高性能、学这个框架成本有点高、解决的并发量挺高的,它一般用在特殊的场景
    sanic框架:
    fastapi框架:它主要用来写一些接口,不出来页面,它只负责写业务逻辑

如何使用Django:

1. 需要先安装: 

        pip install django

2. 版本的问题

django1.x: 以前的老项目在使用,它跟2.x的版本区别不是特别大
django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.x
django3.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.6
 

4. 如何创建django项目

    # 先切换路径到你想存储的位置
    命令行创建:
        django-admin startproject 项目名称
        django-admin startproject myfirst

 pycharm创建项目

        File
            New project
                django
                    ...

5. 注意事项:

    1. 项目名称必须是英文,不能是中文
    2. 一个pycharm窗口只打开一个django项目

6. 如何启动项目

 先把路径切到跟manage.py同级目录下面

     命令行启动
        python3 manage.py runserver
        python3 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框架至少要有一个应用

taobao
    user
    order
    address

应用名要做到见名知意,符合变量的命名规则即可,但是,教学使用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的启动文件,入口文件

相关文章:

web应用程序、Django框架的学习

web应用程序 什么是web? Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可,不需要再安装其他软件 案例: 淘宝网、京东网、博客园、等都是基于web应用的程序 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序&#xff0c…...

【c++之设计模式】组合使用:抽象工厂模式与单例模式

简介 学以致用,使用抽象工厂及单例模式创建不同轿车及轿车装饰品。 代码 定义一个抽象工厂类来创建不同类型的轿车和轿车装饰品。抽象工厂类中具有创建不同类型轿车和轿车装饰品的纯虚方法。 abstractFactory.h #pragma once#include "Car.h" #inclu…...

Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版

下载: http://dt1.8tupian.net/2/29913a53b500.pg3介绍:Photoshop Elements 2024(简称PSE即PS简化版)是一款定位在数码摄影领域的全新的图像处理软件,该软件包括了专业版的大多数特性,只有少量的简化选项,提供了调整颜…...

seata事务回滚引起的skywalking数据库存储空间剧增的问题排查

基本信息 产品名称:ATS3.0 问题分类:编码问题 环境类型:环境无关 问题现象 11月1日上午华润DBA收到数据库磁盘空间告警,检查后发现skywalking连接的mysql数据库占用空间从之前一直是比较稳定的,但是10月31日…...

数据库SQL

数据库&SQL 数据库基本概念数据库DataBase定义 数据库管理系统(DBMS)定义在JAVA项目中与数据库的结合数据库管理系统中常见的概念库与表的关系 SQL数据类型数字类型浮点类型字符类型TEXT类型日期类型 SQL语言的分类DDL:数据定义语言修改表结构的注意事项 DML:数据操作语言D…...

C语言实现给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

完整代码&#xff1a; // 给一个不多于5位的正整数&#xff0c;要求&#xff1a;一、求它是几位数&#xff0c;二、逆序打印出各位数字。 #include<stdio.h>int main(){int num;int len0;printf("请输入一个不多于5位的正整数:");scanf("%d",&n…...

101 对称二叉树

原题链接&#xff1a;101 对称二叉树 全代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : va…...

安全测试,接口返回内容遍历~

最近公司被人大量爬取数据&#xff0c;查了一下发现&#xff0c;用户主页接口&#xff0c;没有加用户登录校验&#xff0c;返回了用户的敏感信息有手机号和邮箱&#xff0c;其实这个接口是用不到这些信息的。再加上用户id是自增长的&#xff0c;所以很容易被别人爬取。 既然这…...

【GIS】地理坐标系与投影坐标系的区别

在地理信息系统中&#xff0c;坐标系的选择和使用是至关重要的。我们通常使用的坐标系有两种&#xff1a;地理坐标系和投影坐标系。本文将详细介绍这两种坐标系的概念、区别、转换方式以及常见投影。 一、定义 地理坐标系&#xff08;Geographic Coordinate System&#xff09…...

太细了:美团一面连环夺命20问,搞定就60W起

说在前面 在40岁老架构师尼恩的&#xff08;50&#xff09;读者社群中&#xff0c;经常有小伙伴&#xff0c;需要面试美团、京东、阿里、 百度、头条等大厂。 下面是一个小伙伴成功拿到通过了美团一面面试&#xff0c;现在把面试真题和参考答案收入咱们的宝典。 通过美团一面…...

休眠和睡眠有哪些区别?如何让电脑一键休眠?

电脑中有休眠和睡眠&#xff0c;那么它们有什么区别呢&#xff1f;下面我们就通过本文来了解一下。 休眠和睡眠的区别 电脑在睡眠状态时&#xff0c;会切断内存之外的设备电源&#xff0c;电脑会进入睡眠状态&#xff0c;当再次唤醒电脑后&#xff0c;不会影响睡眠前保存好的工…...

Kibana使用Timelion根据时间序列展示数据

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

基础:JavaScript的怪癖之一:提升(Hoisting)

JavaScript&#xff0c;通常被称为“Web 语言”&#xff0c;是一种多功能且广泛使用的编程语言。它以其怪癖而闻名&#xff0c;其中之一就是 hoisting&#xff08;提升&#xff09;。无论你是经验丰富的开发人员还是刚刚开始你的编码之旅&#xff0c;理解提升对于编写干净和高效…...

前端特殊字符转码

前端特殊字符转码 建议 最好不要传名称&#xff0c;传ID 是在不行就用这个方法 name encodeURIComponent(name),...

Python开发运维:Python3.7安装Django3.2

目录 一、理论 1.pip 2.Django 3.Pycharm国内镜像源 二、实验 1.Python3.7安装Django3.2 三、问题 1.安装django3.2报错 2.pip更新报错 一、理论 1.pip &#xff08;1&#xff09;概念 1&#xff09;pip pip 是 Python 的包安装程序。其实&#xff0c;pip 就是 Pyt…...

B站双11,联手天猫暴涨2亿消费新势力

一直以来&#xff0c;手持高活跃、高粘性用户群体的B站是行业用来观察年轻人消费习惯的重要平台。以至于用户群体的不断壮大带动了B站的商业价值。如今B站的商业舞台越来越大&#xff0c;不断地向外界招手&#xff0c;欢迎更多品牌积极加入到这个千万年轻人聚集的内容社区。 2…...

如何选择SVM中最佳的【核函数】

参数“kernel"在sklearn中可选以下几种 选项&#xff1a; 接下来我们 就通过一个例子&#xff0c;来探索一下不同数据集上核函数的表现。我们现在有一系列线性或非线性可分的数据&#xff0c;我们希望通过绘制SVC在不同核函数下的决策边界并计算SVC在不同核函数下分类准确…...

RT-Thread的构建与配置系统

Kconfig&#xff1a;kernel config配置文件&#xff08;提供系统的配置裁剪功能&#xff09;Scons&#xff1a;构建工具env工具&#xff1a;主要提供构建系统所需的各种环境变量以及软件包的管理 Env Env是RT-Thread推出的开发辅助工具&#xff0c;针对基于RT-Thread操作系统…...

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)

基于ARM语音识别的智能家居系统 我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战&#xff0c;使用到stm32开发板&#xff0c;讯飞的离线语音识别&#xff0c;我们在此之前&#xff0c;我们先学习一些Linux系统的基本操作。 。 一、Linux简介 在嵌入式开发中&am…...

Git的简介以及基本使用

目录 一.Git的简介 拓展&#xff1a;Git与SVN的区别&#xff08;各自的优点与缺点&#xff09; 二.Git文件的4种状态 三.Git的常用命令 搭建完成之后&#xff0c;将项目文件也上传之后&#xff0c;现在模拟其他人来下载这个代码 今天就分享到这啦&#xff01;&#xff01;…...

如何写 Skill

核心概念 Skill 是一个自包含的模块&#xff0c;用来给 Claude/Cascade 注入特定领域的知识、工作流和工具。本质上就是一个"新手入职指南"&#xff0c;让通用 AI 变成某个领域的专家。 目录结构 skill-name/ ├── SKILL.md # 必须&#xff0c;核心文件 └…...

别再被@JsonFormat和@DateTimeFormat搞晕了!SpringBoot中时间处理的完整避坑指南

SpringBoot时间格式化终极指南&#xff1a;从JsonFormat到实战避坑 凌晨三点的办公室&#xff0c;咖啡杯已经见底&#xff0c;屏幕上却再次弹出那个熟悉的400错误——"Failed to parse Date value"。这可能是每个Java开发者在处理时间格式时都经历过的噩梦。时间数据…...

Polars 2.0清洗性能天花板在哪?实测对比Dask/Modin/Vaex:单机1TB数据清洗仅需11.3秒(附完整安装脚本)

第一章&#xff1a;Polars 2.0 大规模数据清洗技巧Polars 2.0 引入了更严格的惰性执行模型、增强的字符串与时间处理能力&#xff0c;以及原生支持多线程 I/O 的 LazyFrame API&#xff0c;显著提升了 TB 级数据清洗的吞吐与可控性。相比 Pandas&#xff0c;其列式内存布局与零…...

Cursor Pro功能突破解决方案:基于cursor-free-vip的完整技术指南

Cursor Pro功能突破解决方案&#xff1a;基于cursor-free-vip的完整技术指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reache…...

告别重复造轮子:用快马AI一键生成无名小站高效开发模板

作为一个经常需要快速搭建小型网站的后端开发者&#xff0c;我最近发现了一个能极大提升开发效率的方法——用InsCode(快马)平台的AI生成功能来创建可复用的基础模块代码。今天就以"无名小站"的后台管理系统为例&#xff0c;分享我的实践心得。 为什么需要代码生成工…...

AI辅助开发进阶:让快马智能助手帮你设计与优化专业图像处理库

今天想和大家分享一个很实用的开发经验——如何用AI辅助工具来优化和扩展专业图像处理库的开发。最近我在做一个Python图像处理工具库&#xff0c;正好用InsCode(快马)平台的AI功能做了些尝试&#xff0c;效果出乎意料的好。 先说说背景。这个工具库最初只有基础的图片缩放和滤…...

告别GDAL依赖!用Rasterio和TensorFlow 2.6搞定BigEarthNet-MM数据集划分与TFRecord转换

告别GDAL依赖&#xff01;用Rasterio和TensorFlow 2.6搞定BigEarthNet-MM数据集划分与TFRecord转换 在遥感图像处理领域&#xff0c;BigEarthNet-MM数据集因其多模态特性&#xff08;Sentinel-1 SAR和Sentinel-2 MSI数据&#xff09;成为研究热点。但许多开发者在处理该数据集时…...

深入解析RS485接口:从硬件设计到工业应用

1. RS485接口基础解析 第一次接触RS485时&#xff0c;我也被它复杂的电气特性搞得一头雾水。直到在工厂里亲眼看到它如何稳定地穿过嘈杂的电机区域传输数据&#xff0c;才真正理解这个老牌工业接口的魅力。RS485本质上是一种差分信号传输标准&#xff0c;采用双绞线进行平衡传…...

新手程序员必备:收藏这份Prompt指南,轻松驾驭大模型创造业务价值!

本文系统介绍了大模型Prompt的概念、撰写框架及核心原则&#xff0c;深入剖析了构建高质量Prompt的实操方法。从RTF、思考链到RISEN等五大框架&#xff0c;再到提升Prompt效果的策略&#xff0c;如明确指令、结构化输出、赋予模型思考时间等&#xff0c;帮助读者高效驾驭大模型…...

Flutter Documentation Website的布局系统:理解Flutter的约束模型

Flutter Documentation Website的布局系统&#xff1a;理解Flutter的约束模型 【免费下载链接】website Flutter documentation web site 项目地址: https://gitcode.com/gh_mirrors/websi/website Flutter Documentation Website的布局系统基于独特的约束模型&#xff…...