zoukankan      html  css  js  c++  java
  • Django 推导、简介

    目  录

    • web应用前提知识

      web应用定义、软件开发、HTTP协议及特性、动静态页面、模板渲染、web请求流程

    • 手撸简易版本的web框架

      思路推导:。。。。。

    • web框架

      web主流框架的分类及其特点介绍

    • Django简介

      创建Django 项目的方式、app(应用)的概念及注意事项、Django各个文件的作用、Django必会三板斧

    • 关于encode   和 decode   的小技巧

    一、web应用前提知识

    1、什么是web应用?

    web应用本质上就是一个socket服务端,而用户的浏览器就是一个客户端。

    (这样我们就可以自己实现一个web框架)

    2、软件开发架构

    c/s 架构: 客户端 与 服务端

    b/s 架构: 浏览器 与 服务器

    b/s架构本质上也就是 c/s架构

    3、HTTP协议及特性

    HTTP协议的由来?

    我们客户端想服务端发送请求数据,以及服务端向客户端返回数据 都需要统一的格式,

    统一格式就需要一个统一的规则,这个规则就是HTTP协议。

    HTTP协议:

    超文本传输协议,它规定了客户端与服务端之间消息传输的格式。

    HTTP协议的四大特性:

      a、基于TCP/IP协议作用于应用层的协议

      b、基于请求响应

        一次请求一次回应,服务器不会主动向客户端发送数据

      c、无状态

        服务端不会保留客户端的状态,客户端每一次请求都是一次新的请求。。。。

      d、无连接

        HTTP 协议,一次请求回应之后就立即断开连接

    数据格式之请求:

      请求首行

      请求头(一堆k,v键值对)

      请求体(post请求携带的数据)

    数据格式之响应:

      响应首行

      响应头(一堆k,v键值对)

      响应体(post请求携带的数据)

    响应状态码:

      1XX: 服务器已经成功接收到你的数据正在处理,并且你可以继续提交数据

      2XX:  请求成功      服务器已经返回你想要的数据

      3XX: 重定向(跳转网页)

      4XX: 请求资源不存在 (找不到请求的对应数据)

      5XX: 服务器错误

    4、动静态页面

    静态页面:

      页面上的数据都是写死的,万年不变

    动态页面:

      页面上的数据都是从后端动态获取的

      例如:动态获取当前时间, 将数据库的数据内容传递给前端页面

    5 模板渲染

      后端生成的数据可以直接传递给前端页面使用(前端页面可以灵活的操作该数据) 》》》 模板语法

      模板渲染 、 模板语法需要用到第三方库    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 %}

    6、web请求流程图

    注意:templates文件

    该文件夹存放的就是所有的页面文件(.html)

    二、手撸简易版本的web框架

    思路推导:

    1、手撸web框架

    (1)socket自己写;(2)http数据自己处理

    如何解决上述两个问题,我们引出以下步骤:

    2、wsgiref模块(web服务网关接口)

    (1)socket代码帮你封装好了

    (2)http数据自动帮你处理好了

      a、请求来的时候,帮你拆分http数据格式

      b、响应走的时候,帮你封装成了符合http数据格式的数据

    3、根据不同的功能拆封成不同的py文件

      urls.py    路由与视图函数的对应关系;

      views.py  处理后端业务逻辑的视图函数(视图函数不单单只是函数,也可以是类)

      templates     专门存放html文件

    规律:只要想添加一个功能,就去urls.py 里面添加一条对应关系,再去views.py 里面写一个视图函数!!!

    接下来的步骤该渲染前端页面了:

    4、动静态页面

    (1)将后端获取到的时间传递给前端页面

      利用字符串的替换,实现数据传递

    (2)将字典传递给前端页面 并且可以很方便的操作

      借助于jiaja2模块实现模板的渲染

      from jinja2 import Template

      temp = Template(data)

      res = temp.render(user={'name':'jsaon'})

    模板渲染:利用模板语法 实现后端传递数据给前端html页面

    模板语法书写格式:两种方式

      变量相关:{{   }}

      逻辑相关:{%  %} 

    三、web框架

    什么是web框架?

    web框架的本质就是一个socket服务端。

    python主流的三大web框架:

    Django:大而全, 自带很多功能模块,(缺点: 有点笨重)

    Flask:  短小精悍, 自带的功能模块很少,大部分依赖于第三方模块。

    Tornado:  异步非阻塞,用于处理多io, 多路复用的情况,可以写游戏后端。

    web框架至少包括3部分:

      a、socket

      b、路由与视图函数

      c、模板渲染

    3个主流框架分别对应的特点:

      Django   

        a、用的别人的 wsgiref

        b、自己写的

        c、自己写的

      Flask:

        a、用的别人的werkzeug

        b、自己写的

        c、用的别人的 jinja2

      Tornado:

        a,b,c 都是自己写的

    注意事项(*****************************):

      1.计算机的名称不能有中文
      2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
      3.项目名不能起中文

    四、Django简介

    1、下载与安装事项

    版本问题
      djang下载
      推荐下载1.11.11版本

    下载的两种方式:
      命令行直接下载
        pip3 install django==1.11.11
      pycharm下载

    验证是否下载成功
      django-admin

    2、创建Django项目的两种方式

    方式1:命令行创建

      创建Django项目:

        django-admin startproject  项目名

      创建app应用:

        python3 manage.py startapp app01

      启动django项目:

        python3 manage.py runserver

    方式2:pycharm创建

    创建django项目

      FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理

    创建app的2种方式:(注意:是在Djang项目创建方式2的基础上)

      (1)pytharm命令行创建:

        python3 manage.py  startapp  app01

      (2)Tools 下面run manage task功能栏:

          在功能栏下面写代码不需要写‘python36  manage.py ’, 可以直接写startapp  app01

      启动django项目的两种方式:

      (1)在run manage task 功能栏下面直接写代码 “runserver”

      (2)点击绿色箭头按钮

    强调:

      1.用django一定要保证只有一个在运行状态 切记切记!!!!!!!

      2.一定记得清浏览器的缓存

      

    五、关于encode 和 decode的小技巧

     不用关系到底是应该用encode 还是decode  ,只需要知道现在数据是什么类型,我们想要转成什么类型的数据即可!!!

  • 相关阅读:
    认证与授权(访问控制)
    文件上传漏洞
    注入攻击
    HTML 5 安全
    Linux添加开机启动命令
    mysql开启远程访问权限
    mysql_connect() php7不支持,php5.5可以,是废弃函数
    REGEXP 正则的实现两个字符串组的匹配。(regexp)
    文章排序权重
    Redis 基本操作
  • 原文地址:https://www.cnblogs.com/qinsungui921112/p/11460026.html
Copyright © 2011-2022 走看看