Web应用的简介
Web应用程序是什么?
Web应用程序是一种可以通过Web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了。
应用程序有两种模式:C/S、B/S
Django就是开发的B/S应用程序,所以,我们就认为浏览器就是我们的客户端,Django框架就是服务端。
Web应用程序的优点:
1. 只需要一个浏览器即可,不再需要安装其他的应用软件。
2. 节省用户的资源空间
3. 它们不需要更新,是因为服务端只要一更新版本,会直接影响客户端的更新
4. 跨平台使用
Web应用程序的缺点:
一旦Web应用程序的服务端宕机,直接影响客户端的正常访问!!!
Web框架:
框架的意思就是别人提前写好的,我们只需要按照人家的要求在固定的位置写好固定的代码。
手撸Web框架
推导框架的演变,代码无需掌握,重点看思路。
Web应用程序主要就是B/S架构的,浏览器就是客户端,只要现在开发出一个服务端即可。
HTTP协议的相关知识:
四大特性:
基于请求和响应
基于TCP协议之上的应用层协议
无状态
短连接/长连接
请求数据格式:
请求首行(请求方式、协议版本号)
请求头
/r/n
请求体
响应数据格式:
响应首行(响应状态码)
响应头
/r/n
响应体
响应状态码:
1xx 、2xx 、3xx 、4xx 、5xx
当我们手写Web框架会出现这种页面,是因为服务端发送的数据不符合HTTP协议规定的格式
代码:服务端
import socket sever = socket.socket() sever.bind(('127.0.0.1',8000)) sever.listen(3) print('开始接收数据') while True: conn,addr = sever.accept() data = conn.recv(1024) print(data.decode('utf8')) # 使用流式协议规范发送的数据格式 conn.send(b'HTTP/1.1 200 ok \r\n\r\n') conn.send(b'hello') conn.close()
结果:
网页显示:
问题:怎样做到在浏览器的地址栏中写什么就显示什么?
思路:
1. 在后端肯定是要知道我们在浏览器输入了什后缀
2. 进行判断,判断是什么后缀就返回什么
浏览器每次朝后端发起请求的时候,都会多一次:/favicon.ico(图标地址),可以先忽略。
存在的问题:
1. socket部分我们每次都要书写(要写重复代码)
2. 我们需要自己来处理HTTP格式的数据,自己做切分,自己来取值等比较麻烦
3. 并发问题没有解决
借助于wsgiref模块(内置模块,直接使用)
from wsgiref.simple_server import make_server
解决了socket部分,不需要我们自己写了,在wsgiref模块里人家帮我们写了。
它解决了并发问题WSGIServer类------>wsgiref------>它能够解决的并发量不高----->本地使用wsgiref服务器--------------->代码上线之后,就不是有它----------->uwsgi服务器(它支持的并发量更高)
代码上线之后会使用 Nginx + uwsgi
代码:
from wsgiref.simple_server import make_server def run(env,response): # env:类似于request,客户端每次发起请求的时候,所携带的数据都在这个里 # response:后端给浏览器返回的数据 print(env) # 将HTTP格式的数据都封装到了大字典里去了 response("200 OK",[]) current_path = env.get('PATH_INFO') # 进行判断 if current_path == '/index': return [b'index'] # return: 返回给浏览器查看的 elif current_path == '/login': return [b'login'] else: return [b'404 error'] if __name__ == '__main__': server = make_server(host='127.0.0.1',port=8000,app=run) #run是个函数名(在django中用的就是函数名) # app=run:只要有客户度发过去请求,那么就会把处理的请求交给run这个函数来处理 #启动服务端 server.serve_forever()
结果:
改进版:
"""
views.py----------------->视图文件--------->主要就是写后端的逻辑的
urls.py------------------>路由文件(后缀)---------->路由与视图函数的对应关系
templates---------------->专门用来存储html文件的
"""
以后我们要想增加一个后缀,只需要在urls.py中写一个路由和在views.py中写一个视图函数即可。
Django框架的学习
Django是python中使用最多的一个主流框架
python中的主流框架:
Django:
主要用来开发Web项目的,比较笨重,一般小型项目不怎么使用它,大而全
flask:
是一个比较轻量级的框架,主要依赖于第三方的模块,不断的安装第三方模块,小而精。
tornado:
异步非阻塞,比较擅长解决高并发问题
版本问题:
1.X(老项目) 2.X(新项目) 3.X(新版本),1.x和2.x本质上差别不是很大,但是也有区别。
在drf中,都要使用2.x以上版本,drf这个框架要求Django的版本必须2.x以上
注意事项:
1. 你的项目名称和应用名称以及其他文件的名称都要使用英文的,坚决不能够使用中文的
2. 你的计算机名称最后都使用英文的
3. 一个pycharm窗口只打开一个django项目,不能够一个窗口打开很多个django项目
如何使用Django:
1. 安装Django
pip install Django == 1.11
Django的版本要和解释器的版本要匹配:
Django2.x版本------------>解释器的版本最好3.6以上
如何验证Django是否安装成功:
在cmd中输入:django-admin。如果有输出内容就说明安装成功
创建项目:
1. 命令行创建:
可以先切换路径,切换到你想把Django项目放到的路径里
命令:django-admin startproject 项目名
2. pycharm创建
File下的New Project 中的django
启动项目:
1. 命令行启动(cmd)
先把路径切到manage.py文件所在路径,然后再输入:python36 manage.py runserver
项目启动起来之后,会监听:http://127.0.0.1:8000/
默认端口号是:8000
如何修改端口号:python36 manage.py runserver 127.0.0.1 8001
2. pycharm启动:点击启动按钮
访问项目:http://127.0.0.1:8000/】
创建应用:
1. 命令行创建
python manage.py startapp [app_label].
python manage.py startspp app01.
2. pycharm 创建
当把应用创建出来之后,紧接着要做的一件事情就是:注册应用
在配置文件中注册应用,这个应用才生效
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', # 全称 'app01', # 简称 ]
主要文件介绍
myfirst_dj
app01
migrations
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
标签:Web,浏览器,py,应用程序,django,Django From: https://www.cnblogs.com/Lucky-Hua/p/17582592.html