目录:
1.框架各组成部分介绍
2.框架启动文件
3.路径与视图函数映射关系
4.视图函数
5.模板文件
6.数据库操作文件
1.框架各组成部分介绍
简易的web框架大概有以下部分组成:
main.py: 启动文件,封装了socket
1. urls.py:路径与视图函数映射关系 ---- url控制器
2. views.py:视图函数,固定有一个形式参数:environ ---- 视图函数
3. templates文件夹:html文件 ---- 模板
4. models.py:在项目启动前,在数据库中创建表结构 ---- 与数据库相关
2.框架启动文件
main.py做为整个框架的启动文件,组要负责socket封装
from wsgiref.simple_server import make_server
from urls import url_pattern
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
print("PATH",environ.get("PATH_INFO"))
# 当前请求路径
path = environ.get("PATH_INFO")
func = None
for item in url_pattern:
if path == item[0]:
func = item[1]
break
if func:
return [func()]
else:
return [b"404!"]
return [b'<h1>Hello, web!</h1>']
httpd = make_server('', 8080, application)
print('Serving HTTP on port 8080...')
# 开始监听HTTP请求:
httpd.serve_forever()
3.路径与视图函数映射关系
urls.py:路径与视图函数映射关系 ---- url控制器
from views import *
# 试图函数
url_pattern = [
("/login", login),
("/reg", reg),
("/index", index),
("/timer",timer),
("/favicon.ico", favi)
]
4.视图函数
views.py:视图函数,固定有一个形式参数:environ ---- 视图函数
import datetime
def login():
with open("templates/login.html", "rb") as f:
data = f.read()
return data
def index():
with open("templates/index.html", "rb") as f:
data = f.read()
return data
def favi():
with open("templates/favicon.ico", "rb") as f:
data = f.read()
return data
def reg():
with open("templates/reg.html", "rb") as f:
data = f.read()
return data
def timer():
now = datetime.datetime.now().strftime("%y-%m-%d %X")
return now.encode("utf-8")
5.模板文件
templates文件夹:html文件 ---- 模板
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>hello world!</h1>
<img src='https://t11.baidu.com/it/u=2162308300,96045043&fm=58'>
<a href="http://www.baidu.com">click</a>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8800/" method="post">
username <input type="text" name="user">
password <input type="password" name="pwd">
<input type="submit">
</form>
</body>
</html>
reg.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>注册页面</h4>
</body>
</html>
6.数据库操作文件
models.py:在项目启动前,在数据库中创建表结构 ---- 与数据库相关
只能做表相关的操作,使用前,应先创建好对应的数据库
import pymysql
# 生成用户表
#连接数据库
conn = pymysql.connect(host='127.0.0.1',port= 3306,user = 'root',passwd='',db='web') #db:库名
#创建游标
cur = conn.cursor()
sql='''
create table userinfo(
id INT PRIMARY KEY ,
name VARCHAR(32) ,
password VARCHAR(32)
)
'''
cur.execute(sql)
#提交
conn.commit()
#关闭指针对象
cur.close()
#关闭连接对象
conn.close()