WEB框架与Django简介

WEB框架与Django简介

HTTP协议:

​ 超文本传输协议:规定了客户端与服务端消息传输的格式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请求流程图缓存

web框架

python三大主流框架:

Django:大而全,自带了不少功能模块,相似于航空母舰(缺点:笨重)

Flask:短小精悍,自带的功能模块特别少,大部分都是依赖于第三方模块(小而轻)

Tornado:异步非阻塞,主要用在处理高io,多路复用的状况,能够写游戏后端

各自特色:

Django:socket用的别人的wsgiref
       路由与视图函数本身写的
       模板渲染本身写的

Flask:socket用的别人的werkzeug
      路由与视图函数本身写的
      模板渲染用的别人的jinja2

Tornado:socket、路由与视图函数、模板渲染都是本身写的

Django简介

注意:服务器

  • 1.计算机的名称不能有中文
  • 2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
  • 3.项目名不能起中文
django下载:版本问题推荐下载1.11.11版本
命令行直接下载:pip3 install django==1.11.11
验证是否下载成功:django-admin

建立django项目的方式:

方式一(命令行建立):
    建立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.必定记得清浏览器的缓存

app(应用)的概念

​ 一个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'  #也能够用简写
]

django各个文件的做用

应用名:
    migration  数据迁移记录相关数据
    admin.py   django后台管理相关
    models.py  模型表相关
    views.py   视图函数相关

项目名:
    settings.py  配置文件
    urls.py  路由与视图函数的映射关系
    
templates:
    项目用到的全部的html文件

manage.py:
    django入口文件

django必会三板斧

from django.shortcuts import render,HttpResponse,redirect
HttpResponse:内部传入一个字符串,返回给浏览器
def index(request):
    #逻辑代码
    return HttpResonse('ok')
render:

除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())  #会把上面定义的所有变量传给前端页面
redirect:重定向

接收一个URL参数,表示跳转到指定的URL

def index(request):
    #业务逻辑
    return redirect('www.baidu.com')
相关文章
相关标签/搜索