• django预热


    课堂笔记:

    day60 2018-04-27
    
    1. 今日内容
        1. 概括
            1. 98%的时间都是在写例子 帮你理解Django  --> 由我们写的例子对比理解Django框架
            2. 安装Django
        2. 写例子
            
            
            
            用户的浏览器(socket客户端)
                3. 客户端往服务端发消息
                
                6. 客户端接收消息
                
                7. 关闭
            
            
            
            JD的服务器(socket服务端)
                1. 启动,监听
                2. 等待客户端连接
                
                4. 服务端收消息
                5. 服务端回消息
                
                7. 关闭
            
            
            
            FTP作业:
                
                FTP客户端:  PUT,1024.avi,2048
                
                FTP服务端:  .split("|")
        
            浏览器和服务端通信都要遵循一个HTTP协议(消息的格式要求).
            
            
            关于HTTP协议:
                1. 浏览器往服务端发的叫 请求(request)
                    请求的消息格式:
                        请求方法 路径 HTTP/1.1
    
                        k1:v1
    
                        k2:v2
    
                        
    
                        请求数据
                    
                2. 服务端往浏览器发的叫 响应(response)
                    响应的消息格式:
                        HTTP/1.1 状态码 状态描述符
    
                        k1:v1
    
                        k2:v2
    
                        
    
                        响应正文   <-- html的内容
        
        动态的网页:
            本质上都是字符串的替换
        字符串替换发生在什么地方:
            在服务端替换完再返回给浏览器!!!
            
        总结一下:
            1. web框架的本质:
                socket服务端  与 浏览器的通信
            2. socket服务端功能划分:
                a. 负责与浏览器收发消息(socket通信)  --> wsgiref/uWsgi/gunicorn...
                
                b. 根据用户访问不同的路径执行不同的函数
                
                c. 从HTML读取出内容,并且完成字符串的替换  --> jinja2(模板语言)
                
            3. Python中 Web框架的分类:
                
                1. 按上面三个功能划分:
                    1. 框架自带a,b,c                 --> Tornado
                    2. 框架自带b和c,使用第三方的a    --> Django
                    3. 框架自带b,使用第三方的a和c    --> Flask
                2. 按另一个维度来划分:
                    1. Django   --> 大而全(你做一个网站能用到的它都有)
                    2. 其他     --> Flask 轻量级
            
            
            
        3. 新建Django项目
            命令行创建:
                django-admin startproject mysite
            pycharm创建:
                1. File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe
            
        4. 设置Django项目:
            1. settings.py
                1. 配置HTML文件存放的位置
                2. 配置静态文件存放的位置
        
    
    2. 作业
        1. 用Django框架把我们之前写过登录的页面返回给浏览器
    View Code

    不完善的服务端实例:

    # -*- coding: utf-8 -*-
    '''
    不完善的web服务端实例
    '''
    
    import socket
    
    # 生成socket对象
    sk = socket.socket()
    # 绑定ip和端口
    sk.bind(('127.0.0.1', 8001))
    # 监听
    sk.listen()
    
    # 写一个死循环,一直等待客户端的链接
    while 1:
        # 获取与客户端的链接
        conn ,_ = sk.accept()
        # 接收客户端发来的消息
        data = conn.recv(8096)
    
        print(data)
        # 给客户端回复消息
        conn.send(b'http/1.1 200 OK
    content-type:text/html; charset=utf-8
    
    ')
        # 想让浏览器再页面上显示出来的内容都是响应正文
        conn.send(b'<h1>hello world</h1>')
        # 关闭
        conn.close()
        sk.close()
    View Code

    浏览器输入 http://127.0.0.1:8001/ 

    根据路径返回不同的页面

    # -*- coding: utf-8 -*-
    '''
    不完善的web服务端实例
    '''
    
    import socket
    
    # 生成socket对象
    sk = socket.socket()
    # 绑定ip和端口
    sk.bind(('127.0.0.1', 8001))
    # 监听
    sk.listen()
    
    
    # 定义处理yimi的函数
    def yimi(url):
        with open('haiyan.html', 'rb') as f:
            res = f.read()
            return res
    
    
    # 定义处理yimi的函数
    def xiaohei(url):
        with open('xiaohei.html', 'rb') as f:
            ret = f.read()
            return ret
    
    
    # 定义一个处理404的
    def f404(url):
        res = '你访问的地址{}找不到'.format(url)
        return bytes(res, encoding='utf-8')
    
    
    url_func = [
        ('/yimi/', yimi),
        ('/xiaohei/', xiaohei),
    ]
    # 写一个死循环,一直等待客户端的链接
    while 1:
        # 获取与客户端的链接
        conn, _ = sk.accept()
        # 接收客户端发来的消息
        data = conn.recv(8096)
        data_str = str(data, encoding='utf-8')
        print(data_str)
        # 用回车换行来切分成数组
        l1 = data_str.split('
    ')
        l2 = l1[0].split()
        url = l2[1]
        print(data)
        # 给客户端回复消息
        conn.send(b'http/1.1 200 OK
    content-type:text/html; charset=utf-8
    
    ')
        # 想让浏览器再页面上显示出来的内容都是响应正文
        for i in url_func:
            if i[0] == url:
                func = i[1]
                break
        else:
            func = f404
        response = func(url)
        conn.send(response)
        # 关闭
        conn.close()
    View Code

    两个html代码片段:第一个名字是  haiyan.html   第二个名字是:xiaohei.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>海燕</title>
    </head>
    <body>
    <h1>web 框架本质是什么鬼002啦啦啦</h1>
    <p>海燕blablabla</p>
    <p>恩,其实这里已经是本质了呢</p>
    </body>
    </html>
    View Code
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>小黑</title>
    </head>
    <body>
    <h1>web 框架本质是什么鬼002啦啦啦</h1>
    <p>这里是小黑</p>
    <p>恩,其实这里已经是本质了呢</p>
    </body>
    </html>
    View Code

     两个正确的url地址:http://127.0.0.1:8001/xiaohei/  http://127.0.0.1:8001/yimi/

    1105 day60 结束 学习了,django项目目录的分类,
                            页面都放在templates下,
                            static文件新设置一个目录,加了配置才能对应起来 
                            BASE_DIR是项目的根目录
                            urls.py是区分设置根据路径区分网页的地方
                            cmd 进入到项目目录后 python mange.py runserver 8001  默认是8000端口号    的方式来启动项目
    View Code
  • 相关阅读:
    62 ip与int类型的转换
    60再谈指针
    59任由制转换
    58进制转换工具
    吉哥工作
    apple
    找第一个非0元素的位置
    若干个数据之和 不考虑溢出
    汇编程序w=x*y+z-200
    4位bcd数转换为2进制数
  • 原文地址:https://www.cnblogs.com/Simonsun002/p/9873949.html
Copyright © 2020-2023  润新知