zoukankan      html  css  js  c++  java
  • Django安装和web框架原理

    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()
          
  • 相关阅读:
    相邻相邻问题
    修改sqlserver2008数据库的排序规则 (转)
    备份删除
    SQL Server 2005系统数据库master重建、修复(转)
    SQL SERVER 2008 重建损坏的master (转)
    深入理解JavaScript作用域和作用域链
    js词法分析
    利用 Console 来学习、调试JavaScript
    expression解决IE6下固定定位的兼容
    浏览器事件的思考
  • 原文地址:https://www.cnblogs.com/yuncong/p/9856635.html
Copyright © 2011-2022 走看看