Django安装和web框架原理
-
在PyCharm中安装
-
在一个新的虚拟环境中安装
-
virtualenvwrapper安装与使用
windows下安装
1、pip install virtualenvwrapper-win注:linux下运行 pip install virtualwrapper
2、创建虚拟环境---mkvirtualenv 环境名
3、列出所有的虚拟环境---lsvirtualenv|workon
4、退出虚拟环境---deactivate
5、删除虚拟环境---rmvirtualenv 环境名
6、进入虚拟环境---workon 环境名
7、跳转到虚拟环境所在的目录---cdvirtualenv
8、查看所有安装包---lssitepackages
9、修改mkvirtualenv的默认路径
创建的虚拟环境默认是在---c:user用户名envs
可以在系统变量中设值WORKON_HOME f:envs
以后创建的虚拟环境都会在你自己设置的目录下
10、创建虚拟环境时指定python版本
mkvirtualenv --python=C:Program FilesPython36python.exe 环境名
11、安装diango---pip install diango
12、创建项目 django-admin startproject 项目名
13、启动项目 python ![img](file:///C:Users12445AppDataLocalTemp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.py runserver
14、创建app python ![img](file:///C:Users12445AppDataLocalTemp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.py startapp app名称
-
-
web框架原理
-
http协议
-
即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
-
HTTP是客户终端(用户)和服务端(网站)请求和应答的标准(tcp协议)
-
http协议工作原理:
- 客户端连接到Web服务器
- 发送http请求
- 服务器接受请求并返回http响应
- 释放连接tcp连接
- 客户端浏览器解析html内容
-
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
- 释放 TCP连接;
- 浏览器将该 html 文本并显示内容;
-
http请求方法
- get 向指定的资源发出“显示”请求
- head 与GET方法一样,都是向服务器发出指定资源的请求
- post 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)
- put 向指定资源位置上传其最新内容。
- delete 请求服务器删除Request-URI所标识的资源
- trace 回显服务器收到的请求,主要用于测试或诊断。
- options 这个方法可使服务器传回该资源所支持的所有HTTP请求方法。
- connect HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
-
常见错误警告
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误
-
http请求格式(request)
-
http响应格式(response)
-
-
html文件实例
-
""" 根据URL中不同的路径返回不同的内容--函数进阶版 返回独立的HTML页面 """ import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) # 绑定IP和端口 sk.listen() # 监听 # 将返回不同的内容部分封装成函数 def index(url): # 读取index.html页面的内容 with open("index.html", "r", encoding="utf8") as f: s = f.read() # 返回字节数据 return bytes(s, encoding="utf8") def home(url): with open("home.html", "r", encoding="utf8") as f: s = f.read() return bytes(s, encoding="utf8") # 定义一个url和实际要执行的函数的对应关系 list1 = [ ("/index/", index), ("/home/", home), ] while 1: # 等待连接 conn, add = sk.accept() data = conn.recv(8096) # 接收客户端发来的消息 # 从data中取到路径 data = str(data, encoding="utf8") # 把收到的字节类型的数据转换成字符串 # 按 分割 data1 = data.split(" ")[0] url = data1.split()[1] # url是我们从浏览器发过来的消息中分离出的访问路径 conn.send(b'HTTP/1.1 200 OK ') # 因为要遵循HTTP协议,所以回复的消息也要加状态行 # 根据不同的路径返回不同内容 func = None # 定义一个保存将要执行的函数名的变量 for i in list1: if i[0] == url: func = i[1] break if func: response = func(url) else: response = b"404 not found!" # 返回具体的响应消息 conn.send(response) conn.close()
-
-