zoukankan      html  css  js  c++  java
  • Django:(01) 关于什么是Django?

    一、从 WSGI 开始了解 Django

      在了解 Django 之前有必要先了解一下 Python 被用于 Web 开发的基础协议——WSGI

      在开发 web 应用时,我们不希望接触到TCP连接、HTTP原始请求和响应格式等一系列麻烦的事情,我们只想专心用 Python 编写 Web 业务,我们该怎么做?

      我们需要把这些底层的麻烦事封装成一个统一的接口。这个现成的接口就是WSGI:Web Server Gateway Interface。

      WSGI接口定义非常简单,我们只需要实现 application()函数,它接收两个参数:

      第一个参数接收包含所有 HTTP 请求信息的 dict 对象;

      第二个参数是一个函数对象,用于发送了HTTP 响应的 Header,在 application() 函数内部它只能被调用一次,并且在调用时要传入两个参数:一个是 HTTP 响应码,一个是一组 list 表示的 HTTP Header,每个 Header 用一个包含两个特定的字符串的 tuple 表示。

      下面是一个最迷你的 Python 应用:

    # hello.py
    def
    application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return ['Hello, web!']

      那么,怎么让它运行起来呢?

      我们需要启动 WSGI 服务器来调用(加载)application() 函数。

      于是,我们需要另外编写一个文件来启动 WSGI 服务:

      

    # server.py
    
    from wsgiref.simple_server import make_server
    
    from hello import application
    
    # 创建一个服务器对象
    httpd = make_server('127.0.0.1', 8000, application)
    
    # 监听HTTP请求:
    httpd.serve_forever()

      运行 server.py 文件,然后就可以在浏览器通过IP和端口访问我们的 mini Web 应用了。
      基于这样的一个应用我们当然可以拓展成更复杂的 Web 应用,但是到最后我们会发现,我们依然在不停地重复的造轮子。

      天才的程序员会很自然地在 WSGI 之上再抽象出一些框架来简化我们的 Web 开发——Django 就是其中之一。

      ps:我们要运行用 Django 框架开发出来的 Web 应用,使用的是 uWSGI 而不是上面简单的 server.py

    uWSGI,是一个程序,充当Web服务器或中间件。
      如果架构是Nginx+uWSGI+APP,uWSGI是一个中间件
      如果架构是uWSGI+APP,uWSGI是一个服务器
    

    二、Django概述的概述

    1. Django的主要目的是简便、快速的开发数据库驱动的网站;
    2. Django强调代码复用和快速开发,具有很强的可扩展性
    3. Django有许多功能强大的第三方插件,多个组件可以很方便的以"插件"形式服务于整个框架;
    4. Django MVT模式:Model,View,Template (Django的 MVT 与通常Web开发中的 MVC 没有本质区别)
    5. 重量级框架,Django原生提供了众多的功能组件,让开发更简便快速:
    数据库ORM支持
    模板
    表单
    认证权限
    Admin管理站点
    session机制
    缓存
    

    三、项目中的Django应用

    • django 自带了一个纯 python 编写的开发阶段使用的 web 服务器,用来预览网站效果和进行开发调试。
    • 一般产品上线才使用 uWSGI(服务器) 或者 uWSGI(中间件)+Nginx。

      现在我们想创建一个 Django 应用,我们该从哪里开始呢?

    1. 首先,需要考虑虚拟环境

      

        (1)创建虚拟环境(联网)

    mkvirtualenv django_py3 -p python3

        (2)在虚拟环境中安装 Django

    pip install django==1.11.11
    

        (3)相关命令

    点开查看相关命令

      

      2、创建项目(两种方式)

        (1)通过 pycharm 创建(推荐)

        (2)通过命令行创建

          - 先进入虚拟环境:

    workon 虚拟环境名

          - 创建Django项目:

    django-admin startproject 项目名

           - 进入上一步创建出来的项目文件根目录下:

     cd 项目根目录

          

          - 创建 templates 模板目录(需要手动配置setting.py配置项)

          - 创建应用:

     # manage.py 为上述创建项目时自动生成的管理文件
     python manage.py startapp 应用名

          - 配置应用:

          用命令行每创建的一个应用要执行这一步操作。

       3、运行测试服务器(两种方式)

        (1)通过命令行运行

    # 可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000
    python manage.py runserver ip:端口

        (2)通过Pycharm运行

          - 点击运行按钮

        - 可以手动指定服务器运行的ip和端口,不指定默认值为: 127.0.0.1:8000

       4、测试服务器能否访问

        在浏览器输入上一步设定的IP和端口号,例如默认的:127.0.0.1:8000

      到这里一个 Hello world 级别的原生 Django 项目算是搭建起来了。下一步就是配置了,但这属于具体的细节,不在本文主题范围内。

       本文旨在让我们对 Django 有一个由抽象到具象的整体认识。

      下一篇,我们会把目光聚焦在Django应用内部的配置,以及具体的业务操作上。

     END

    参考:

    https://www.djangoproject.com/

    https://djangobook.com/

    https://yiyibooks.cn/xx/Django_1.11.6/intro/overview.html

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432012393132788f71e0edad4676a3f76ac7776f3a16000

    https://www.cnblogs.com/Xjng/p/aa4dd23918359c6414d54e4b972e9081.html

  • 相关阅读:
    简单理解ThreadLocal原理和适用场景
    Portal实现原理
    Spring cloud微服务实战——基于OAUTH2.0统一认证授权的微服务基础架构
    Java8中 Date和LocalDateTime的相互转换
    sonar rule
    图论篇2——最小生成树算法(kurskal算法&prim算法)
    图论篇1——图的基本概念
    数论篇6——欧拉函数
    数论篇5——数论四大定理
    数论篇4——逆元(数论倒数)
  • 原文地址:https://www.cnblogs.com/mzfly/p/9962749.html
Copyright © 2011-2022 走看看