如何让python嵌入html实现类似php的快速开发,十分有价值
admin
2023-06-27 09:23:48
0

1.在一个文件夹名为www.html3.com的web项目来实现,首先到nginx的配置文件nginx.conf做如下配置
如何让python嵌入html实现类似php的快速开发,十分有价值
python和html混合编写的文件,我以文件后缀为.phtml,通过服务器配置让它重定向到 /rewrite/

2.进去项目目录下的static/html/ 编写一个1.phtml 内容如下(内容是随便写的,只是为了测试)

<%
#define a variable 
str_var = "hello world" 

############# divide  ################
import time

if True:                        
        str_var2 = str(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
else:
        str_var2 = "nothing"
%>



        
        phtml
        


        

start

I say: <% str_var %>

I say: <% str_var2 %>

end

注意:博主本人的想法是在html文档前放一对分隔符且只是一个,专门用于处理数据与逻辑,而后面的分隔符也就是嵌入到html文档内的那些分隔符,里面只放置一个变量名,用于输出变量值,因为时间有限,只是简简单单实现,请谅解!

3.我该项目是flask项目(核心思想与web框架无关),然后写个路由,内容如下

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
@app.route('/rewrite/')
def rewite():
        url_path = str(request.environ['REQUEST_URI'])[1:]
        if os.path.exists(url_path):
                oFile = open(url_path)
                text = oFile.read()
                pattern = re.compile('<%([\s\S]*?)%>')
                result = pattern.findall(text)
                content = []
                flag = 0
                while flag < len(result):
                        if flag == 0:
                                exec(result[flag].strip())
                                content.append('')
                        else:
                                content.append(locals()[result[flag].strip()])
                        flag += 1

                flag = 0
                def mysub(matched):
                        nonlocal flag
                        flag2 = flag
                        flag += 1
                        return content[flag2]

                res = re.sub('<%[\s\S]*?%>',mysub,text)
                return res
        else:
                return "404 not found"

代码解释:

  1.如果有看不懂request.environ['REQUEST_URI'],可以看一下博主之前写的一篇文章“nginx的rewrite ,如何在flask项目中获取重写前的url”

  2.result变量用于存放匹配到分隔符内的字符串,是列表

  3.content变量用于存放result列表每个元素解释后的值,而content[0]放空字符串(因为没有输出,result[0]只用于通过exec( )来执行字符串语句)

4.测试访问http://ww.html3.com/static/html/1.phtml
如何让python嵌入html实现类似php的快速开发,十分有价值

如何让python嵌入html实现类似php的快速开发,十分有价值
假设访问不存在的2.phtml


附:

通配符.  匹配除换行符\n之外的任何单字符

如果要匹配包括换行符的所有字符就不要用(.),用([\s\S])

关于如何解决贪婪匹配,加?

相关内容

热门资讯

越来越多城市推行有奖发票 作者 | 第一财经 陈益刊今年中央财政投入100亿元在50个试点城市开展有奖发票试点,而未纳入试点范...
创明申请甲醇增程器功率控制方法... 国家知识产权局信息显示,绵阳创明智能电池有限责任公司、深圳市创明新能源股份有限公司申请一项名为“甲醇...
原创 红... 这一到618活动红米手机就杀疯了,本身高配低价的手机再降价,一下子吸引了很多用户入手,在京东平台内,...
一所突然“消失”的学校,一个心... 2120万元的赔偿请求,最终仅判赔2.53万元。2026年2月10日,一审判决送达后,武敏只用3天就...
新华社:人工智能和能源加速“双... 新华社发文表示,中国石油“昆仑”大模型深度解析复杂地质构造和油气藏特征,助力油气勘探开发提质增效;南...
俄军已控制七成城区,乌东重镇或... 据凤凰卫视报道,乌克兰武装部队在康斯坦丁诺夫卡市的处境正进一步恶化。根据几个隶属于乌军的社交媒体账号...
人民日报:AI一本正经胡说八道... 日前,江苏一顾客用AI软件预约餐厅,到店后却被告知无预约记录,怒写差评,商家称不支持AI订座,AI软...
燃气灶开关怎么维修 燃气灶是我们日常生活中经常使用的一种电器,而灶具的开关是其功能的核心部分之一,一旦发生故障,可能会影...
燃气灶看不见火花怎么办 如果燃气灶看不见火花,可能是因为以下原因:1. 火花塞头脏了:为了确保正常工作,燃气灶上的火花塞头需...
燃气灶靠墙吧台收纳方法 燃气灶靠墙吧台是很多小型家庭厨房常见的布局,因为这种布局既方便省空间,又能满足日常烹饪需要。但是由于...