• 第52天:Web应用、手写Web框架、Django的下载安装


    Web应用程序

            介绍

            Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

            应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。

            Web应用程序的优点

    • 网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器;
    • 网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;
    • 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
    • 网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;
    • 因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)

            Web应用程序的缺点

    • 严重依赖服务端的正常运行、服务端一旦出问题、客户端里面受到影响

     手写web框架

    1. import socket
    2. server = socket.socket()
    3. server.bind(('127.0.0.1', 8000))
    4. while True:
    5. sock, addr = server.accept()
    6. data = sock.recv(1024)
    7. print(data.decode('utf-8'))
    8. str_data = data.decode('utf-8')
    9. lst_data = str_data.split()
    10. print(lst_data)
    11. current_path = lst_data[1]
    12. sock.send(b'HTTP/1.1 200 OK \r\n\r\n')
    13. if current_path == '/index':
    14. sock.send(b'index')
    15. elif current_path == '/home':
    16. sock.send(b'home')
    17. else:
    18. sock.send(b'404 error')
    19. sock.close()

    wsgiref模块       

            最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。

            如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。

            正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口协议来实现这样的服务器软件,让我们专心用Python编写Web业务。这个接口就是WSGI:Web Server Gateway Interface。而wsgiref模块就是python基于wsgi协议开发的服务模块。

            wsgiref文件

    1. from wsgiref.simple_server import make_server
    2. from urls import urls
    3. def run(env, response):
    4. response('200 OK', [])
    5. print(env)
    6. current_path = env.get('PATH_INFO')
    7. func = None
    8. for url in urls:
    9. if current_path == url[0]:
    10. func = url[1]
    11. break
    12. if func:
    13. res = func()
    14. return [res.encode('utf-8')]
    15. else:
    16. return [b'404 error']
    17. if __name__ == '__main__':
    18. server = make_server('127.0.0.1', 8000, app=run)
    19. server.serve_forever()

            urls文件

    1. from views import *
    2. urls = (
    3. ('/index', index),
    4. ('/home', home),
    5. ('/login', login),
    6. ('/register', register),
    7. )

            views文件

    1. def index():
    2. with open('templates/index.html', 'r', encoding='utf-8') as f:
    3. return f.read()
    4. def home():
    5. return 'from home'
    6. def login():
    7. return 'from login'
    8. def register():
    9. return 'from register'

    Django的下载安装

            下载Django

            方式一:在命令行输入:pip3 install django

            注:

            pip install django==1.11.9 -i

            http://pypi.hustunique.org/simple 指定版本号,指定国内镜像

            方式二:用pycharm安装

            方式三:用pycharm的Terminal的命令行安装

            版本的问题

            django1.x:以前的老项目在使用,它跟2.x的版本区别不是特别大
            django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.x
            django3.x:新版本了,现在有不少的项目确实在选择3.x的版本 

            创建django项目

            命令行创建:    django-admin startproject 项目名称

            django-admin startproject myfirst        

            pycharm创建项目

            File ---> New project ---> django

            启动django项目

            命令行启动

            python manage.py runserver 8001

  • 相关阅读:
    Node.js学习笔记
    C++异常处理
    数据中台开发流程
    Android系统修改驱动固定USB摄像头节点绑定前后置摄像头
    Vue组件的存放目录问题
    基于IDEA 工程项目的git实操
    RabbitMQ 集群部署及配置
    如何使用测试仪进行400G交换机性能测试
    学术论文写作
    ad18学习笔记十二:如何把同属性的元器件全部高亮?
  • 原文地址:https://blog.csdn.net/Mrdong200144/article/details/134292930