Python进阶系列
Python进阶-网络编程-01
Python进阶-网络编程-02
Python进阶-网络编程-03
Python进阶-多任务编程-01
Python进阶-多任务编程-02
Python进阶-多任务编程-03
Python进阶-正则表达式
Python进阶-数据库编程-01
Python进阶-数据库编程-02
Python进阶-数据库编程-03
Python进阶-数据库编程-04
Python进阶-数据拷贝问题
Python进阶-模块导入问题
Python进阶-miniWeb框架
思路:
核心代码:
# 改进动态显示
# 1.判断后缀
if file_path.endswith(".py"):
# 2.让.py显示的内容和.html显示的内容区别分开
response_body = "This is index Show! %s" % time.ctime()
response_data = utils.create_http_response("200 OK", response_body.encode())
思路:
核心代码:
if file_path == "/index.py":
response_body = "This is index Show!"
response_data = utils.create_http_response("200 OK", response_body.encode())
elif file_path == "/center.py":
response_body = "This is center Show!"
response_data = utils.create_http_response("200 OK", response_body.encode())
elif file_path == "/gettime.py":
response_body = "helloworld %s" % time.ctime()
response_data = utils.create_http_response("200 OK", response_body.encode())
else:
response_body = "Sorry Page Not Found! 404".encode()
response_data = utils.create_http_response("404 Not Found", response_body)
实现步骤:
创建urls模块,提供一个路由字典
字典保存路径和函数的对应关系
导入函数的模块 from application import funs
route_dict
# 定义路由字典
route_dict = {
'/index.py' : funs.index,
'/center.py' : funs.center,
'/gettime.py' : funs.gettime
}
创建funs模块,提供具体功能对应的函数
定义路径对应的函数
def index():
return "This is index show!"
def center():
return "This is center show!"
def gettime():
return "This is gettime show! %s" % time.ctime()
修改app文件中动态显示的判断部分
- 判断路径是否在路由字典中
- 如果在字典中,根据key(请求路径)取出对应的函数的引用
- 执行函数,获取函数的返回值,然后赋值给response_body
if file_path in urls.route_dict:
# 根据key值,去urls.route_dict中获取值
func = urls.route_dict[file_path]
# 根据路由字典,获取函数的引用,执行该函数,返回执行的结果,保存到respon_body变量中
response_body = func()
# 调用 utils 模块的create_http_response函数,拼接响应协议
response_data = utils.create_http_response("200 OK", response_body.encode())
修改urls模块
route_dict = { }
修改funs模块
导入 from application import urls
创建装饰器工厂
def route(path):
# 装饰器
def function_out(func):
urls.route_dict[path] = func
print("装饰[%s]" % path)
def function_in():
return func()
return function_in
return function_out
装饰函数
@route("/center.py")
def center():
return "This is center show!"
在app模块中导入funs模块
此时funs模块中的函数被加载,加载的同时被装饰(就会向字典中添加路由信息)
思路
拷贝资源(templates)到工程下
修改funs模块中的index和center函数
在函数中读取对应的文件
with open("templates/center.html", "r", encoding='UTF-8') as file:
# 2.读取文件内容
content = file.read()
使用正则替换网页中的内容 {%content%} --> helloworld
返回替换后的内容
return content
创建并导入数据到数据库
修改index函数
连接数据库,获取数据
替换为查询的数据
content = re.sub("{%content%}", data_from_mysql, content)
思路:
把查询的数据进行遍历,并且拼接html格式的文本
表示一行 表示一列
替换为拼接后的字符串
content = re.sub(“{%content%}”, data_from_mysql, content)
注意:
%s %s %s ----> line # line是一个元组