超文本传输协议:规定了客户端与服务端消息传输的格式html
1.基于TCP/IP协议做用于应用层的协议 2.基于请求响应 3.无状态 4.无链接
1.请求首行 2.请求头(一堆k,v键值对) 3. //空格不能忘了 4.请求体(post请求携带的数据)
1.响应首行 2.响应头(一堆k,v键值对) 3. //空格不能忘 4.响应体(post请求携带的数据)
1xx 服务器已经成功接收到数据正在处理,能够继续提交其余数据 2xx 请求成功 服务器已经将你请求的数据发送给你了 3xx 重定向 4xx 请求资源不存在 5xx 服务器错误
静态网页:前端
页面上的数据都是写死的,万年不变python
动态网页:web
页面上的数据是从后端动态获取的数据库
后端生成的数据直接传递给前端页面使用(而且前端页面能够灵活的操做修改数据)django
模板语法须要依赖于第三方模块jinja2后端
from jinja2 import Temlate
模板语法 jinjia2支持前端直接使用相似于python的语法操做数据浏览器
<!--user_dic是后端定义的变量--> <p>{{user_dic}}</p> <p>{{user_dic.name}}</p> <p>{{user_dic['password']}}</p> <p>{{user_dic.get('name')}}</p> <!--链接数据库--> {% for user in user_dic} <!--数据格式[{},{},{}]--> <tr> <td>{{user_dic.id}}</td> <td>{{user_dic.name}}</td> <td>{{user_dic.password}}</td> </tr> {% endfor %}
简易版本的web请求流程图缓存
Django:大而全,自带了不少功能模块,相似于航空母舰(缺点:笨重) Flask:短小精悍,自带的功能模块特别少,大部分都是依赖于第三方模块(小而轻) Tornado:异步非阻塞,主要用在处理高io,多路复用的状况,能够写游戏后端
Django:socket用的别人的wsgiref 路由与视图函数本身写的 模板渲染本身写的 Flask:socket用的别人的werkzeug 路由与视图函数本身写的 模板渲染用的别人的jinja2 Tornado:socket、路由与视图函数、模板渲染都是本身写的
注意:服务器
django下载:版本问题推荐下载1.11.11版本 命令行直接下载:pip3 install django==1.11.11 验证是否下载成功:django-admin
方式一(命令行建立): 建立Django项目:django-admin startproject 项目名 建立app应用:python3 manage.py startapp app01 启动django项目:python3 manage.py runserver ps:用命令行建立django默认不会自动建立templates文件夹,须要你手动本身建立(注意改文件夹路劲是否被添加配置文件中)
方拾二(pycharm建立): FILE => new project选择第二个,django,须要注意名字不能有中文,选择本地的解释器,勾选后台管理 建立app:1.pycharm命令行键 python3 manage.py startapp app01 2.Tools下面run manage task功能栏 启动:点绿色小箭头 强调: 1.用jdango必定要保证只有一个在运行状态 2.必定记得清浏览器的缓存
一个django项目就是一所大学
app就是大学里面的学院
注意新建立的app须要在配置文件中注册才能生效
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config' #能够用全称 'app01' #也能够用简写 ]
应用名: migration 数据迁移记录相关数据 admin.py django后台管理相关 models.py 模型表相关 views.py 视图函数相关 项目名: settings.py 配置文件 urls.py 路由与视图函数的映射关系 templates: 项目用到的全部的html文件 manage.py: django入口文件
from django.shortcuts import render,HttpResponse,redirect
def index(request): #逻辑代码 return HttpResonse('ok')
除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数,将数据填充进模板文件,最后把结果返回给浏览器
两种给前端页面传值的方式:
def reg(request): user_dic = {'name':'lucas','age':18} return render(request,'reg.html',{'user_dic':user_dic})
def reg(request): user_dic = {'name':'lucas','age':18} return render(request,'reg.html',locals()) #会把上面定义的所有变量传给前端页面
接收一个URL参数,表示跳转到指定的URL
def index(request): #业务逻辑 return redirect('www.baidu.com')