zoukankan      html  css  js  c++  java
  • django 代码

    Django 代码

    day1

    不含文件的初级版本

    连抄带改

    import socket
    from threading import Thread
    server = socket.socket()
    server.bind(('127.0.0.1',8001))
    server.listen()
    def func(conn):
        # 接受请求数据       # 自从用了这个之后  不接收就不渲染 发过去的网页了
        client_msg = conn.recv(1024).decode('utf-8')
        print(client_msg)
        # 组合响应协议的消息格式,然后发送响应信息
        conn.send('HTTP/1.1 200 ok 
    
    '.encode('utf-8'))
    
        #   打开index.html文件,返回给前端
        with open('01 web 不含文件.html','rb')as f:
            data = f.read()
        conn.send(data)
    
        # 放在这  否则影响代码渲染 具体为什么?
        conn.send('who are you '.encode('utf-8'))
        # 防止资源占用 所以要断开 无保存连接
        conn.close()
    
    # for i in range(10):
    while 1 :
        # 接收连接    如果不在这里会执行100个  只接收了一个,只执行一个线程
        # 在外面一次接收多次执行
        conn, addr = server.accept()
        # 有一次发送了源码 没渲染 错开了? 上面有conn,这里也正常渲染了
        # conn.send('HTTP/1.1 200 ok 
    
    '.encode('utf-8'))
        #开启线程并发
        t = Thread(target=func , args=(conn,))
        t.start()
    
    # for i in range(22222):
    #     conn.send(b'b')
    # conn.close()
    # server.close()
    

    上传文件的代码

    import socket
    from threading import Thread
    server = socket.socket()
    server.bind(('127.0.0.1',8001))
    server.listen()
    
    def func(conn):
        client_msg = conn.recv(1024).decode('utf-8')
        will_send = client_msg.split('
    ')[0].split(' ')[1]
        # print(client_msg)
        print(will_send)
        if will_send == '/':
            conn.send(b'HTTP/1.1 200 ok 
    
    ')
            with open('01传文件的.html','rb')as f:
                data = f.read()
            conn.send(data)
            conn.close()
        elif will_send == '/index.css':
            conn.send(b'HTTP/1.1 200 ok 
    
    ')
            with open('index.css', 'rb')as f:
                data = f.read()
            conn.send(data)
            conn.close()
        elif will_send == '/index.js':
            conn.send(b'HTTP/1.1 200 ok 
    
    ')
            with open('index.js', 'rb')as f:
                data = f.read()
            conn.send(data)
            conn.close()
        elif will_send == '/1.jpg':
            conn.send(b'HTTP/1.1 200 ok 
    
    ')
            with open('1.jpg', 'rb')as f:
                data = f.read()
            conn.send(data)
            conn.close()
        elif will_send == '/favicon.ico':
            conn.send(b'HTTP/1.1 200 ok 
    
    ')
            with open('favicon.ico', 'rb')as f:
                data = f.read()
            conn.send(data)
            conn.close()
    
    
    while 1 :
        conn,abb = server.accept()
        T = Thread(target=func, args=(conn,))
        T.start()
        
        
        
        conn 接收在循环里,不在主进程里,实现多少次请求,多少次响应
        依然记不住  server.send(b'HTTP/1.1 200 ok 
    
    ')
        
        解释
        
        :client_msg.split('
    ')[1].split(' ')[0]
        
        client_msg  =  
        	    GET / HTTP/1.1
                Host: 127.0.0.1:8001
                Connection: keep-alive
                Cache-Control: max-age=0
                Upgrade-Insecure-Requests: 1.....
                    
                    GET /index.css HTTP/1.1
                    Host: 127.0.0.1:8001
                    Connection: keep-alive
                    
      本以为会用正则,结果使用client_msg.split(‘/r/n’)[0]   取第一行  然后 .split(' ')[1] 根据空格把/	     这些切出来   
      
         /           第一个是/ 所以当是 /的时候  ,把html文件读出来给他
         /index.css
    	/index.js
    	/1.jpg
    	/favicon.ico
    

    传文件的网页

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <link rel="stylesheet" href="index.css">
        <link rel="icon" href="favicon.ico">
        
    </head>
    <body>
    
    <h1> 欢迎来到20期 </h1>
    <img src="1.jpg" alt="">
     
    <script src="index.js"></script>
    </body>
    
    </html>
    
    
    index.js  
        alert('ddd dd');
    
    index.css
         h1{
                background-color: red;
                color: #1f87ff;
            }
    

    day3

    index.html 文件
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
    
      <title>Title</title>
    </head>
    <body>
      <h1>
          {{ name }}
          <!--jinja2 格式-->
      </h1>
    <ul>
        {% for hobby in hobbylist %}
        <li>{{ hobby }}</li>
        {% endfor %}
    </ul>
    </body>
    </html>
    
    基于jinja2的网页传输
    from wsgiref.simple_server import make_server
    from jinja2 import Template
    
    
    def index():
        with open("index.html", "r",encoding='utf-8') as f:
            data = f.read()
        template = Template(data)  # 生成模板文件
        print('template
    ',template)
    
        # >> > template = Template('Hello {{ name }}!')   格式
        # >> > template.render(name='John Doe') == u'Hello John Doe!'  render 格式两种
    
        ret = template.render({"name": "于谦", "hobbylist": ["烫头", "泡吧"]})  # 把数据填充到模板里面
        print('ret
    ',ret,'>>>>>>>>>>>>>>>>>>>>end')
    
        # print(ret)
        print('我',ret.encode('utf-8').decode('utf-8'),'你')
        print('喔喔',repr(ret),ret.encode('utf-8'))
    
        print('我',repr(bytes(ret, encoding="utf8")),bytes(ret, encoding="utf8"))
        # return [bytes(ret, encoding="utf8"), ]
        # return [ ret.encode('utf-8')]			字符转换成字节的两种写法
        return [ret.encode('utf-8') ]
    
    
    
    # 定义一个url和函数的对应关系
    URL_LIST = [
        ("/index/", index),
    ]
    
    def run_server(environ, start_response):			# 不和socketserver一样,两个参数
        start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ])  # 设置HTTP响应的状态码和头信息
        url = environ['PATH_INFO']  # 取到用户输入的url		
        func = None  # 将要执行的函数		
        for i in URL_LIST:
            if i[0] == url:
                func = i[1]  # 去之前定义好的url列表里找url应该执行的函数
                break
        print('func
    ',func)			
        if func:  # 如果能找到要执行的函数
            return func()  # 返回函数的执行结果
        else:				
            return [bytes("404没有该页面", encoding="utf8"), ]
    
    
    if __name__ == '__main__':
        httpd = make_server('127.0.0.1',8000, run_server)
        print("Serving HTTP on port 8000...")
        httpd.serve_forever()
    
  • 相关阅读:
    vue学习之vuex的入门
    Vue的入门之安装
    JS之作用域链
    map去重value值
    增量部署和全量部署
    js跳转页面的方法
    Quartz定时任务时间设置
    @RequestParam和@PathVariable用法小结
    nginx负载均衡的5种策略(转载)
    使用Joda-Time优雅的处理日期时间
  • 原文地址:https://www.cnblogs.com/Doner/p/10872800.html
Copyright © 2011-2022 走看看