1.纯手撸一个简易版本的web框架
1.手动处理socket请求
2.手动处理http数据,获取用户访问的url
3.根据用户访问url的不同 响应不同的结果
2.wsgiref模块(web服务端网关接口)
封装了socket代码
请求来的时候将http数据格式 拆封成一个大字典
响应走的时候将数据打包成符合http协议要求的数据格式
启动
server = make_server('127.0.0.1',8080,run)
# 实时监测127.0.0.1:8080地址 一旦有客户端来连接 会自动加括号调用run方法
server.serve_forever() # 启动服务端
3.如何给html页面传递数据
1.如何将当前日期渲染到html页面 >>> 用r模式读取html文件成字符串 利用字符串的替换
2.如何将一个字典渲染到html页面上并且还能够简单快捷取值操作
模板的渲染
jinja2模块
1.模板的渲染(传数据)
2.模板语法(极其贴近python语法)
from jinja2 import Template
将文本格式的html数据传入Template
render()
模板语法
{{ data }}
{% for user in user_list %}
{% endfor %}
模板语法 只有两种情况
{{}}:变量相关
{%%}:逻辑相关
4.对不同的功能拆封成不同的文件
templates文件夹(专门放html文件)
urls.py
views.py
web 框架
python三大主流web框架
1.Django:大而全 自带的功能特别特别多 就类似于航空母舰 有时候过于笨重
2.Flask:短小精悍 自带的功能特别特别少 全都是依赖于第三方组件
flask框架第三方的组件特别多 如果把flask第三方全部加起来 完全可以盖过Django
比较受限于第三方的开发者
3.Tornado:天生的异步非阻塞框架 速度特别快 能够抗住高并发
可以开发游戏服务器
A:socket
B:路由与视图函数匹配
C:模板语法
Django
A:用的别人的 wsgiref
B:自己写的
C:自己写的
Flask
A:用的别人的 wsgiref>>> werkzeug
B:自己写的
C:用的别人的 jinja2
Tornado
A,自己写的
B,自己写的
C,自己写的
Django
注意事项
1.你的计算机的名称不能有中文
2.文件的命名尽量也不要用中文
3.一个pycharm窗口只能有一个项目 不要把多个项目放在一个窗口下
django版本问题
1.x 2.x
以django1.11版本为主
django下载
pip3 install django==1.11.11
如何确认是否下载成功
命令行敲 django==django-admin
如何创建django项目
命令行式
1.命令行创建django项目
django-admin startproject 项目名
2.命令行创建django应用(一个应用对应一块儿独立的功能)
django-admin startapp 应用名
python manage.py startapp 应用名
3.命令行启动django项目
python manage.py runserver
(******)
注意 用命令行创建django项目 不会自动新建templates模板文件夹
需要你自己手动创建 并且需要你自己去settings.py文件中注册该文件路径
pycharm快捷方式
创建的应用一定要在settings中注册 才能生效 否则无法识别
django主要文件介绍
项目名文件
同名的项目文件夹
settings.py django暴露给用户可配置的文件
urls.py 路由与视图函数对应关系
manage.py django入口文件
应用文件夹
migrations文件夹 数据库迁移记录
admin.py django后台管理
apps.py 应用注册相关
models.py orm模型类
tests.py 测试文件
views.py 视图函数
app概念
django项目就类似于是一所大学,app就是大学里面不同的学院
每个学院都有自己独立的功能
django小白必会三板斧
HttpResponse:返回字符串
render:返回html页面 并且能够给该页面传值
redirect:重定向