day 52 django 入门

---恢复内容开始---

web框架的本质

所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端

自定义web框架

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8000))
sock.listen()

while True:
    conn, addr = sock.accept()
    data = conn.recv(8096)
    print(data)
    # 给回复的消息加上响应状态行
    conn.send(b"HTTP/1.1 200 ok\r\n\r\n")  #请求头,自定义状态码
    conn.send(b"OK")
    conn.close()

根据不通的路径返回不通的内容

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8000))
sock.listen(5)

while True:
    conn, addr = sock.accept()
    data = conn.recv(8096)
    url = data.decode('utf-8').split()[1]
    print(url)
    # 给回复的消息加上响应状态行
    conn.send(b"HTTP/1.1 200 ok\r\n\r\n")
    # conn.send(b"OK")
    if url == '/index':
        conn.send(b'index')
    else:
        conn.send(b'404')

根据不通的路径返回不通的内容(函数版)

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8000))
sock.listen(5)

def oumei(url):
    ret = '这是一个%s页面' % url
    return ret.encode('utf-8')

while True:
    conn, addr = sock.accept()
    data = conn.recv(8096)
    url = data.decode('utf-8').split()[1]
    print(url)
    # 给回复的消息加上响应状态行
    conn.send(b"HTTP/1.1 200 ok\r\n\r\n")
    # conn.send(b"OK")
    if url == '/index':
        res = oumei(url)
    else:
        conn.send(b'404')

 

返回html

import socket

# 创建一个socket对象
sk = socket.socket()
# 绑定IP和端口
sk.bind(('127.0.0.1', 8000))
# 监听
sk.listen()


# 定义函数
def oumei(url):
    ret = "{} --- oumei".format(url)
    return ret.encode('utf-8')


def rihan(url):
    ret = "{} --- rihan".format(url)
    return ret.encode('utf-8')


def guochan(url):
    ret = "{} --- guochan".format(url)
    return ret.encode('utf-8')


def index(url):
    with open('index.html', 'rb') as  f:
        return f.read()


list1 = [
    ('/oumei/', oumei),
    ('/rihan/', rihan),
    ('/guochan/', guochan),
    ('/index/', index),
]

# 等待连接
while True:
    # 接受连接
    conn, addr = sk.accept()
    # 接受数据
    data = conn.recv(1024)
    # 获取路径
    url = data.decode('utf-8').split()[1]
    # 发送数据
    conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
    for i in list1:
        if i[0] == url:
            res = i[1](url)
            break
    else:
        res = b'404'

    # func = None
    # for i in list1:
    #     if i[0] == url:
    #         func = i[1]
    #         break
    # if func:
    #     res = func(url)
    # else:
    #     res = b'404'

    conn.send(res)
    # 断开连接
    conn.close()

动态返回html

import socket

# 创建一个socket对象
sk = socket.socket()
# 绑定IP和端口
sk.bind(('127.0.0.1', 8000))
# 监听
sk.listen()


# 定义函数
def oumei(url):
    ret = "{} --- oumei".format(url)
    return ret.encode('utf-8')


def rihan(url):
    ret = "{} --- rihan".format(url)
    return ret.encode('utf-8')


def guochan(url):
    ret = "{} --- guochan".format(url)
    return ret.encode('utf-8')


import time


def timer(url):
    now = time.strftime('%Y-%m-%d %H:%M:%S')
    with open('time.html', 'r', encoding='utf-8') as f:
        data = f.read()
        data = data.replace('@@time@@', now)

    return data.encode('utf-8')


def index(url):
    with open('index.html', 'rb') as  f:
        return f.read()


list1 = [
    ('/oumei/', oumei),
    ('/rihan/', rihan),
    ('/guochan/', guochan),
    ('/index/', index),
    ('/time/', timer),
]

# 等待连接
while True:
    # 接受连接
    conn, addr = sk.accept()
    # 接受数据
    data = conn.recv(1024)
    # 获取路径
    url = data.decode('utf-8').split()[1]
    # 发送数据
    conn.send(b'HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n')
    for i in list1:
        if i[0] == url:
            res = i[1](url)
            break
    else:
        res = b'404'

    # func = None
    # for i in list1:
    #     if i[0] == url:
    #         func = i[1]
    #         break
    # if func:
    #     res = func(url)
    # else:
    #     res = b'404'

    conn.send(res)
    # 断开连接
    conn.close()

 Django

安装:

1. 下载 ;
  pip install django==1.11.20 -i https://pypi.doubanio.com/simple

2.创建项目;

  django-admin startproject 项目名称

3. 启动
1. 命令行
切换到项目的根目录下 manage.py
python manage.py runserver    # http://127.0.0.1:8000/
python manage.py runserver 80   http://127.0.0.1:80/   #指定端口
python manage.py runserver 0.0.0.0:80     # http://0.0.0.0:80/ #指定端口和ip

启动Django报错: UnicodeEncodeError ...

 报这个错误通常是因为计算机名为中文,改成英文的计算机名重启下电脑就可以了。

 

使用

编辑settings.py文件指定谁可以使用Django项目:

在urls.py文件内写代码:

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/yanpeizhang/p/10604962.html
今日推荐