美文网首页
3.简易web框架的介绍

3.简易web框架的介绍

作者: Stone_説 | 来源:发表于2023-07-04 01:57 被阅读0次

目录:
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()

相关文章

网友评论

      本文标题:3.简易web框架的介绍

      本文链接:https://www.haomeiwen.com/subject/eqvcudtx.html