博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 代码
阅读量:5219 次
发布时间:2019-06-14

本文共 4911 字,大约阅读时间需要 16 分钟。

Django 代码

day1

不含文件的初级版本

连抄带改

import socketfrom threading import Threadserver = 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 \r\n\r\n'.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 \r\n\r\n'.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 socketfrom threading import Threadserver = 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('\r\n')[0].split(' ')[1]    # print(client_msg)    print(will_send)    if will_send == '/':        conn.send(b'HTTP/1.1 200 ok \r\n\r\n')        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 \r\n\r\n')        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 \r\n\r\n')        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 \r\n\r\n')        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 \r\n\r\n')        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 \r\n\r\n')        解释        :client_msg.split('\r\n')[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

传文件的网页

    
Title

欢迎来到20期

index.js alert('ddd dd');index.css h1{ background-color: red; color: #1f87ff; }

day3

index.html 文件  
Title

{
{ name }}

    {% for hobby in hobbylist %}
  • {
    { hobby }}
  • {% endfor %}
基于jinja2的网页传输from wsgiref.simple_server import make_serverfrom jinja2 import Templatedef index(): with open("index.html", "r",encoding='utf-8') as f: data = f.read() template = Template(data) # 生成模板文件 print('template\n',template) # >> > template = Template('Hello {
{ name }}!') 格式 # >> > template.render(name='John Doe') == u'Hello John Doe!' render 格式两种 ret = template.render({"name": "于谦", "hobbylist": ["烫头", "泡吧"]}) # 把数据填充到模板里面 print('ret\n',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\n',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()

转载于:https://www.cnblogs.com/Doner/p/10872800.html

你可能感兴趣的文章
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>