Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可,不需要再安装其他软件
案例:
淘宝网、京东网、博客园、等都是基于web应用的程序
应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式
1. 你所需要的只是一个适用的浏览器
2. 节省硬盘空间
3. 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
4. 过跨平台使用的例如Windows,Mac,Linux等等
严重依赖服务端的正常运行、服务端一旦出问题、客户端里面受到影响
别人写好的框架(就是一堆目录和文件),我们只需要在固定的位置写代码即可
web应用程序是B/S架构的,所以、我们需要自己写一个服务端、然后让浏览器作为我们的客户端即可
怎么样去写一个服务端? socket编程
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服务器---------->uwsgi服务器(uwsgi)-------->Nginx服务器+uwsgi服务器
wsgiref模块是一个内置的模块,直接可以拿来使用,无需安装
它帮助我们封装了socket部分,另外,它也解决了部分的高并发问题,但是,它能够解决的并发量并不高
他们也会帮我们把HTTP格式的数据做封装处理,也就是说不需要我们在自己处理
views.py # 主要用来写业务逻辑的,它也称为是视图文件
urls.py # 主要用来写后缀和视图函数的对应关系,它也称为是路由文件
template # 存储项目中用到的模板文件,html文件,模板文本,提供了一些模板语法.
每一个框架都应用有一个入口文件,Django也不例外
Django框架:最主流的,市场占用率90%以上,笨重的框架,里面自带了很重的模块,不适用于小项目,类似于航空母舰
falsk框架:轻量级的,小而美,自带的功能比较少,需要安装很多的第三方模块,当你安装的模块足够多的时候,也差不多跟Django差不多了
tornado框架:异步非阻塞、高性能、学这个框架成本有点高、解决的并发量挺高的,它一般用在特殊的场景
sanic框架:
fastapi框架:它主要用来写一些接口,不出来页面,它只负责写业务逻辑
pip install django
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的版本
django3用个2.7版本,不行
django2----->python3.6以上
django1----->python3.6
# 先切换路径到你想存储的位置
命令行创建:
django-admin startproject 项目名称
django-admin startproject myfirst
pycharm创建项目
File
New project
django
...
1. 项目名称必须是英文,不能是中文
2. 一个pycharm窗口只打开一个django项目
先把路径切到跟manage.py同级目录下面
命令行启动
python3 manage.py runserver
python3 manage.py runserver 8001
'''Next, start your first app by running python manage.py startapp [app_label].'''
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__.py
admin.py # django自带的后台管理系统
apps.py # 暂且忽略,写一些注册的东西
models.py # 模型层,跟数据库打交道的,以后创建表就在这里写
tests.py # 测试脚本
views.py # 视图文件,主要用来写核心的业务逻辑的
mysecond
__init__.py
settings.py # Django的全局配置文件
urls.py # 路由文件,写地址的后缀和视图函数的对应关系
wsgi.py # wsgiref服务器
templates # 存储HTML文件的
db.sqlite3 # Django自带的小型数据库
manage.py # Django的启动文件,入口文件