Django基础入门

HTTP协议规格:

'GET / HTTP/1.1     <-- 请求行
Host: 127.0.0.1:8001 <-- 请求头部
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: _ga=GA1.1.522660093.1520652325; csrftoken=gYuOvvynQQLeetX7Bxj6naEyQbOgH9pLBphdWvMTmK5nos3b8QZRhTA5y4DnQG3M

'    <-- 没有请求数据

 

###################1.简单的sokect web框架:#####################

import sockesk = socket.socket()
sk.bind(("127.0.0.1",8080)) sk.listen() while 1: conn,addr =sk.accept() date = conn.recv(1024) print(date) #这是一个socket链接web的一个协议 conn.send((b"http/1.1 200 ok \r\ncontent-type:text/html: charset=utf-8\r\n\r\n")) conn.send(b"helle sb") #1.给web返回一个send消息,2.send消息时候也可用html标签来包装内容:<h1>hello s10!</h1>  
    conn.close()
    sk.close()

sokect给浏览器返回结果:

 

################ 2.请求不同的web返回不同的内容###################

 

import socket
sk = socket.socket()
sk.bind(("127.0.0.1",8001))
sk.listen()

while 1:
    conn,addr = sk.accept()
    data =conn.recv(1024)
    data_str = str(data,encoding="utf-8")
    l1 = data_str.split("\r\n")
    l2 = l1[0].split()
    url =l2[1]

    conn.send(b"http/1.1 200 ok \r\ncontent-type:text/html; charset=utf-8\r\n\r\n")

    if url =='/yimi/':
        response = b'<h>hello we</h>'
    elif url =='/welcome/':
        response=b'<h1>Welcome to login </h1>'
    else:
        response =b'<h1>404! not foud</h1>'

    conn.send(response)
    conn.close()
    sk.close()

 

server端给web返回结果:

 

 

 

################ 3.函数版本请求的web返回不同的内容#############

import socket
sk = socket.socket()
sk.bind(('127.0.0.1',80))
sk.listen()

#定义一个处理hellowd的函数
def hellowd(url):
    ret = 'welconme {}'.format(url)
    return bytes(ret,encoding="utf-8")

#定义第二个web处理函数
def xiaoxue(url):
    ret ='hei is {}'.format(url)
    return bytes(ret,encoding="utf-8")

while 1:
    conn,add = sk.accept()
    date = conn.recv(1024)
    date_str = str(date,encoding="utf-8")

    l1 =date_str.split("\r\n")
    l2 = l1[0].split()
    url = l2[1]
    conn.send(b'http/1.1 200 ok\r\nconten-type:text/html; charset=utf-8\r\n\r\n')

    if url =='/hellowd/':
        response =hellowd(url)
    elif url =='/xiaoxue/':
        response =xiaoxue(url)
    else:
        response =b'<h1>404! not file</h1>'
    conn.send(response)
    conn.close()

 

#########通过web返回一个html的页面##############

import socket

s = socket.socket()
s.bind(("127.0.0.1",8001))
s.listen()

def yimi(url):
with open("yimi.html","rb") as f:
ret =f.read()
return ret

def login(url):
with open("login.html","rb") as f:
ret = f.read()
return ret


def f404(url):
ret = '你访问的{}找不到'.format(url)
return bytes(ret,encoding="utf-8")

url_func =[
("/yimi/",yimi),
("/login/",login),
]

while 1:
conn,add = s.accept()
date = conn.recv(1024)
date_str =str(date,encoding="utf-8")
l1 = date_str.split('\r\n')
l2 = l1[0].split()
url = l2[1]
conn.send(b'http/1.1 200 ok \r\ncontent-type:text/html; charset=ut-8\r\n\r\n')
for i in url_func:
if i[0] ==url:
func = i[1]
break
else:
func =f404

response =func(url)
conn.send(response)
conn.close()

 

server端给web返回html登录页面结果:

 

#########返回一个html动态的页面##############

 

posted @ 2018-04-30 16:58  胸不平$怎平天下  阅读(138)  评论(0编辑  收藏  举报