Django安装和web框架原理

摘要:
[img](file:///C:Users12445AppDataLocalTemp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.pystartappapp名称web框架原理http协议即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。delete请求服务器删除Request-URI所标识的资源trace回显服务器收到的请求,主要用于测试或诊断。options这个方法可使服务器传回该资源所支持的所有HTTP请求方法。"#返回具体的响应消息conn.sendconn.close()

Django安装和web框架原理

  • 在PyCharm中安装

    • 5XbagS.md.png
    • 在cmd中输入
      • django-admin startproject 项目名
        • 如果报错 不是内部或外部命令,也不是可运行的程序
        • 需要添加环境变量
        • 5XbrQh.md.png
      • 运行Django项目
        • 切换到项目名目录下
        • python manage.py runserver 或者 python manage.py runserver 127.0.0.1:8080 或者 python manage.py runserver 8090
    • 在PyCharm中新建
      • File----》Now Project---->Django---->路径
        • ![img](file:///C:Users12445DocumentsTencent Files1244506782ImageGroupUXP%UW0454%F~}M1EKT1@1L.png)
        • 5XbCcH.md.png
      • 运行方式
        • 5XbEfN.md.png
        • 5XbeXu.png
  • 在一个新的虚拟环境中安装

    • virtualenvwrapper安装与使用
      windows下安装
      1、pip install virtualenvwrapper-win

      注:linux下运行 pip install virtualwrapper

      2、创建虚拟环境---mkvirtualenv 环境名

      3、列出所有的虚拟环境---lsvirtualenv|workon

      4、退出虚拟环境---deactivate

      5、删除虚拟环境---rmvirtualenv 环境名

      6、进入虚拟环境---workon 环境名

      7、跳转到虚拟环境所在的目录---cdvirtualenv

      8、查看所有安装包---lssitepackages

      9、修改mkvirtualenv的默认路径

      创建的虚拟环境默认是在---c:user用户名envs

      可以在系统变量中设值WORKON_HOME f:envs

      以后创建的虚拟环境都会在你自己设置的目录下

      10、创建虚拟环境时指定python版本

      mkvirtualenv --python=C:Program FilesPython36python.exe 环境名 

      11、安装diango---pip install diango 

      12、创建项目 django-admin startproject 项目名

      13、启动项目 python ![img](file:///C:Users12445AppDataLocalTemp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.py runserver

      14、创建app python ![img](file:///C:Users12445AppDataLocalTemp%W@GJ$ACOF(TYDYECOKVDYB.png)manage.py startapp app名称

  • web框架原理

    • http协议
      • 即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

      • HTTP是客户终端(用户)和服务端(网站)请求和应答的标准(tcp协议)

      • http协议工作原理:

        1. 客户端连接到Web服务器
        2. 发送http请求
        3. 服务器接受请求并返回http响应
        4. 释放连接tcp连接
        5. 客户端浏览器解析html内容
      • 例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

        1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
        2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
        3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
        4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
        5. 释放 TCP连接;
        6. 浏览器将该 html 文本并显示内容;
      • http请求方法
        • get 向指定的资源发出“显示”请求
        • head 与GET方法一样,都是向服务器发出指定资源的请求
        • post 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)
        • put 向指定资源位置上传其最新内容。
        • delete 请求服务器删除Request-URI所标识的资源
        • trace 回显服务器收到的请求,主要用于测试或诊断。
        • options 这个方法可使服务器传回该资源所支持的所有HTTP请求方法。
        • connect HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
      • 常见错误警告
        • 1xx消息——请求已被服务器接收,继续处理
        • 2xx成功——请求已成功被服务器接收、理解、并接受
        • 3xx重定向——需要后续操作才能完成这一请求
        • 4xx请求错误——请求含有词法错误或者无法被执行
        • 5xx服务器错误——服务器在处理某个正确请求时发生错误
      • http请求格式(request)
        • 5XbUZ9.md.png

        • 请求行

          • GET /home/ HTTP/1.1
            
        • 请求头

          • Content-Type: text/html; charset=utf-8
            
        • 空行

          • 
            
            
        • 请求数据(可有可无)

      • http响应格式(response)
        • 5XbKIA.md.png
        • 响应行
          • HTTP/1.1 200 OK
        • 响应头(给浏览器看的那些信息)
        • 空行
        • 响应数据(真正显示在浏览器上显示给用户看)
    • html文件实例

      • """
        根据URL中不同的路径返回不同的内容--函数进阶版
        返回独立的HTML页面
        """
        
        import socket
        sk = socket.socket()
        sk.bind(("127.0.0.1", 8080))  # 绑定IP和端口
        sk.listen()  # 监听
        
        
        # 将返回不同的内容部分封装成函数
        def index(url):
            # 读取index.html页面的内容
            with open("index.html", "r", encoding="utf8") as f:
                s = f.read()
            # 返回字节数据
            return bytes(s, encoding="utf8")
        
        
        def home(url):
            with open("home.html", "r", encoding="utf8") as f:
                s = f.read()
            return bytes(s, encoding="utf8")
        
        
        # 定义一个url和实际要执行的函数的对应关系
        list1 = [
            ("/index/", index),
            ("/home/", home),
        ]
        
        while 1:
            # 等待连接
            conn, add = sk.accept()
            data = conn.recv(8096)  # 接收客户端发来的消息
            # 从data中取到路径
            data = str(data, encoding="utf8")  # 把收到的字节类型的数据转换成字符串
            # 按
        分割
            data1 = data.split("
        ")[0]
            url = data1.split()[1]  # url是我们从浏览器发过来的消息中分离出的访问路径
            conn.send(b'HTTP/1.1 200 OK
        ')  # 因为要遵循HTTP协议,所以回复的消息也要加状态行
            # 根据不同的路径返回不同内容
            func = None  # 定义一个保存将要执行的函数名的变量
            for i in list1:
                if i[0] == url:
                    func = i[1]
                    break
            if func:
                response = func(url)
            else:
                response = b"404 not found!"
        
            # 返回具体的响应消息
            conn.send(response)
            conn.close()
        

免责声明:文章转载自《Django安装和web框架原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IntegerJsuop Whitelist下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《Python》hashlib模块、configparser模块、logging模块

一、hashlib模块     Python的hashlib模块中提供了常见的摘要算法,如md5,sha1等等。     摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的字符串(通常用16进制的字符串表示)。     不同的字符串通过这个算法计算出的密文总是不同的,相同的算法,相同的字符串,获得的结果总是相同的(不同的语...

Python之滑动窗口

需求 对于一个数组array = ["n","v","l","f",...,"y","c","k"]; input 当前位置 index 数组的长度 arraySize 基于当前位置,(前/后)滑动窗口的元素数目 windowSize 即 滑动窗口(假定:包含当前元素 array[idx]) 总长:2*windowSize+1 output 滑动...

Axja(2) post()和get()方法

  load()方法是局部方法,因为他需要一个包含元素的jQuery 对象作为前缀。而$.get()和$.post()是全局方法,无须指定某个元素。对于用途而言,.load()适合做静态文件的异步获取,而对于需要传递参数到服务器页面的,$.get()和$.post()更加合适。 jQuery.post(url, [data], [callback], [t...

Python字符编码

字符编码 计算机只认识数字,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符?必须经过一个过程: 字符--------(翻译过程)------->数字 这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码 一、存取文件的原理(nodepad++,...

python爬虫03:那个叫做 Urllib 的库让我们的 python 假装是浏览器

相信你已经摸清了 浏览器各种请求的套路 也知道了怎么在手机上进行请求和返回数据的抓取 那么接下来我们就开始来使用 python 了 代码 lu 起来 那么 怎么用 python 写各种请求呢? 今天要给大家介绍的就是 Urllib 这可是 python 内置的库 有了它 我们写代码就轻松了 腰也不疼了 腿也不酸了 头发也不秃了 那么怎么使用Urll...

运维自动化发布系统

运维自动化发布系统 大家好哈,最近在学习用 python 做一个server发布系统。游戏的版本发布是运维日常工作中的主要部门,而且这工作频繁、重复、重复的进行着,运维必须采用一些自动化运维手段来处理版本更新发布;实现自动化运维很有必要的手段,下面根据公司业务需求,自定义开发了一款运维自动化发布系统 一、背景: 公司游戏业务应用需要频繁更新到线上服务器,...