1.基本TCP/IP 协议做用于应用层的协议 2.基于请求响应 3.无状态 4.无链接
请求首行 请求头(一堆k,v键对)) (空格) 请求体(post请求携带的数据)
响应首行 响应头(一堆k,v键对) (空格) 响应体(post请求携带的数据)
1xx:服务器已经成功接收到你的数据正在处理,你能够继续提交数据 2xx:请求成功 服务器已经成功接收到你的数据发送给你了 3xx:重定向 4xx:请求资源错误/不存在 5xx:服务器错误
静态网页: 页面上的数据都是写死的,万年不变 动态网页: 页面上的数据是从后端动态获取的 好比后端获取当前时间 后端获取数据库数据而后传递给前端页面
后端生成的数据直接传递给前端页面使用(而且前端页面能够灵活的操做改数据) >>> 模板语法 模板渲染 模板语法须要依赖于第三方模块 pip install jinja2 模板语法 jinja2支持前端直接使用相似于python的语法操做数据 <p>{{ user_dic }}</p> <p>{{ user_dic.name }}</p> <p>{{ user_dic['password'] }}</p> <p>{{ user_dic.get('name') }}</p> {% for user in user_dict %} <!--[{},{},{},{}]--> <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.password }}</td> </tr> {% endfor %}
python三大主流web框架 Django:大而全,自带了不少功能模块,相似于航空母舰 (缺点:有点笨重) Flask:短小精悍,自带的功能模块特别少,大部分都是依赖于第三方模块(小而轻) Tornado:异步非阻塞 主要用在处理高io 多路复用的状况 能够写游戏后端 a:socket b:路由与视图函数 c:模板渲染 Django: a用的别人的 wsgiref b本身写的 c本身写的 Flask: a用的别人的 werkzeug b本身写的 c用的别人的 jinja2 Tornado: a,b,c都是本身写的
安装 :pip3 install django==1.11.11 1、 使用 :django-admin startproject 项目名称 建立app :cd 项目名称 python3 manage.py startapp app01(子项目) 文件目录介绍: -项目名 ----settings:全局配置信息 ----urls:总路由,请求地址跟视图函数的映射关系 -应用名 ----mingrations:数据库迁移记录 ----admin.py:Django后台管理相关 ----models.py 数据库表模型 ----views 视图函数() --static 存放(静态文件、css、js、img) --templates : html存放 --manage.py ---项目入口,执行一些命令 2、新建目录 -static 存放静态文件(css、文件) 在settings中 TEMPLATES中查看路径存不存在 STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')] -templates html存放,在settings中 TEMPLATES中查看路径存不存在 3、配置settings.py (1)每新建一个app必须在配置文件中注册:在 INSTALLED_APPS 下添加 'app01.apps.App01Config' (2)TEMPLATES 中'DIRS':[ os.path.join(BASE_DIR, 'templates') ] (3)在配置文件最后加 :STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static'), ] (4)要把 MIDDLEWARE 中(注释掉)...CsrfViewMiddleware 4、数据库建表迁移指令 python3 manage.py makemigrations python3 manage.py migrate 5、执行项目: python3 manage.py runserver 127.0.0.1:8001
from django.shortcuts import render,HttpResponse,redirect
def reg(request): user_dict = {'name':'jason','password':'123'} return render(request,'reg.html',{'user_dict':user_dict}) def reg(request): user_dict = {'name':'jason','password':'123'} return render(request,'reg.html',locals())