web复习
五层
应用层
传输层
网络层
数据链路层
物理层
socket 套接字 位于应用层和网络传输层之间的虚拟层 一组接口
c/s-->b/s
web框架 原理
1.百度 socket 服务端
2.socket服务端启动
3.绑定ip和端口
4.监听等待连接
8.接受数据
9.返回数据
12断开连接
浏览器socket客户端
5.socket服务端启动
6.连接(ip和端口)
7.发送数据
10.接受数据
11.断开连接
web框架本质--> socket服务端
超文本
双工通信
HTTP工作原理
在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
- 释放 TCP连接;
- 浏览器将该 html 文本并显示内容;
HTTP状态码
所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。
状态代码的第一个数字代表当前响应的类型:
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误
虽然 RFC 2616 中已经推荐了描述状态的短语,例如"200 OK","404 Not Found",但是WEB开发者仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。
https://www.cnblogs.com/maple-shaw/articles/9060408.html
web框架功能
1.socket收发消息(wsgiref,uwsgi)
2.根据不同的路径返回不同的结果
3.返回动态页面(字符串的替换) 模板渲染(jinja2)
web框架的分类
diango:2 3
flask:2
tornado:1 2 3
其他的分类:
Django
其他: flask tornado
下载
命令行
pip install django==1.11.26 -i https://pypi.tuna.tsinghua.edu.cn/simple
pycharm
创建项目
命令行
django-admin startproject 项目名
pycharm
file > new project > django > 输入路径 > 选择解释器 _> create
启动项目
命令行
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80
pycharm
点绿三角 django 前面是dj
可以修改配置 可以改IP和端口
diango中.idea
自己pycharm配置包配置,打开别人的项目要先把.idea删掉
diango中settings
静态文件配置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #文件夹根目录 DEBUG = True #因为启动出错调试模式 上线后改为Flase,出错不报错,给用户更好的用户体验 ALLOWED_HOSTS = ['*'] #让所有的用户可以访问 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', #diango的服务器引擎 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } LANGUAGE_CODE = 'en-us' #语言 TIME_ZONE = 'UTC' #时区:英国的 改为上海的:shanghai STATIC_URL = '/static/' #静态文件夹的别名,配置静态文件要以/static/为开头 STATICFILES_DIRS = [os.path.join(BASE_DIR,'static1')] # join(BASE_DIR必须是这个,静态文件夹static1) # 加上静态文件的存放路径
diango中url
静态文件配置
STATICFILES_DIRS = [ # 路由 os.path.join(BASE_DIR,'static1'), # 存放静态文件的路径 os.path.join(BASE_DIR,'static1'), ]
使用-写函数的格式
from django.shortcuts import HttpResponse, render #导入返回字符串的包HttpResponse, #导入返回页面的包render def index(request): # 函数里写处理逻辑,request拿到路径,固定写法 print(request.path_info) # diango自己会拿到对的应路径 # return HttpResponse('<h1>index</h1>') # 返回字符串 return render(request, 'index.html') # 返回页面 #根据路径返回templates中的index.html文件
路由
url(r^'用户输入输入的路径 0.0.0.0:80/index/',不加括号的函数名)
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', index), # 路径和函数的对应关系, url(r'^modal/', modal), ]
diango中templates
某.html的静态文件配置
引入静态文件以STATIC_URL开头
<head> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.min.css"> <link rel="stylesheet" href="/static/plugins/font-awesome-4.7.0/css/font-awesome.min.css"> <script src="/static/js/jquery.js"></script> <script src="/static/plugins/bootstrap-3.3.7-dist/js/bootstrap.js"></script> </head>
来源:https://www.cnblogs.com/-xct/p/12026175.html