如何讓python嵌入html實現類似php的快速開發,十分有價值

来源:https://www.cnblogs.com/xxpythonxx/archive/2019/11/29/11960398.html
-Advertisement-
Play Games

1.在一個文件夾名為www.html3.com的web項目來實現,首先到nginx的配置文件nginx.conf做如下配置 python和html混合編寫的文件,我以文件尾碼為.phtml,通過伺服器配置讓它重定向到 /rewrite/ 2.進去項目目錄下的static/html/ 編寫一個1.ph ...


1.在一個文件夾名為www.html3.com的web項目來實現,首先到nginx的配置文件nginx.conf做如下配置
在這裡插入圖片描述
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"
%>
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>phtml</title>
        <script>
                
        </script>
</head>
<body>
        <p>start</p>
        <p>I say: <span><% str_var  %></span></p>
        <p>I say: <span><% str_var2 %></span></p>
        <p>end</p>
</body>
</html>

註意:博主本人的想法是在html文檔前放一對分隔符且只是一個,專門用於處理數據與邏輯,而後面的分隔符也就是嵌入到html文檔內的那些分隔符,裡面只放置一個變數名,用於輸出變數值,因為時間有限,只是簡簡單單實現,請諒解!

PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

3.我該項目是flask項目(核心思想與web框架無關),然後寫個路由,內容如下

@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
在這裡插入圖片描述

在這裡插入圖片描述
假設訪問不存在的2.phtml


附:

通配符.  匹配除換行符\n之外的任何單字元

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

關於如何解決貪婪匹配,加?


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、效果圖 二、具體效果實現代碼 1 public static void main(String[] args) { 2 int[][] array = new int[10][10]; 3 int num = 1; 4 for(int i=0;i<array.length;i++){ 5 6 i ...
  • 任何一個java對象都天然繼承於Object類,線上程間實現通信的往往會應用到Object的幾個方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)與notify(),notifyAll()幾個方法實現等待/通知機制,同樣的, 在j... ...
  • 2.1、anaconda的安裝 ​ 1 、安裝可執行程式 ​ 2 、配置環境變數 ​ 根據環境變數的 去查找可執行程式文件,如果查找到就執行,如果查找不到就報錯。 ​ 3 、python的多版本相容問題 ​ 修改可執行程式的文件名,再配置環境變數 ​ 4 、hash案例 2.2、requests模塊 ...
  • 生活中,當你閑暇之餘瀏覽資訊的時候,當你搜索資料但繁雜信息夾雜時候,你就會想,如何更為準確的定位需求信息。今天就為你帶來: 分頁查詢 需求分析:在列表頁面中,顯示指定條數的數據,通過翻頁按鈕完成首頁/上一頁/下一頁/尾頁的查詢 數據分析: 通過觀察,頁面上需要顯示下麵的幾個數據:當前頁:curren ...
  • 安裝 SQLAlchemy 報錯 安裝命令 報錯截圖 編碼錯誤,這裡我們需要改下源碼 解決方案 重新安裝,安裝成功 參數文章: ...
  • 在python3.7 環境下 函數聲明時能在參數後加冒號,如圖: 可能有疑問,python不是動態類型語言 ,難不成還能指定參數類型? 來看一下列印結果: 但同時也確實能傳其他類型的值 如:f("test",123) 那結果如何呢? 如下: 當然會報錯了啊,返回值是一個字元串,int型不能參與字元串 ...
  • student類 package cn.itheima.Manag;/** * *標準類 * **/public class Student { //學號 private String id; //姓名 private String name; //年齡 private String age; // ...
  • 伺服器的監控通過安裝一些常用的監控軟體之外,有時也需要運行一些shell或Python腳本;shell下可以使用系統自帶的ps/free/top/df等shell命令,Python可以調用subprocess等模塊來運行shell命令,不過這麼做就比較麻煩。這裡有一個比較好用的第三方模塊:psuti ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...