python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧
上一篇文章,介紹了如何用python和flask來開發web應用,是不是覺得用python做web應用很簡單?
(1)URL如何傳遞參數?
(2)網頁如何重定向?
閱讀前,還是希望大家能告訴我,關于您和Python的熟練程度。
你的Python技能程度
網頁如何重定向?
用戶在訪問某個頁面的時候,我們希望他登錄后才能訪問該頁面,如果此時他沒有登錄,系統就讓瀏覽器由當前頁面跳轉到登錄頁面,這里就涉及頁面重定向問題。所謂頁面重定向,就是用戶在打開某個頁面的時候,我們期望頁面跳轉到另一個指定的頁面,讓用戶完成某種操作或執行某個動作。
Flask中提供了重定向函數redirect(),該函數的功能就是跳轉到指定的URL。下面在PyCharm中新建一名稱為2-4的工程。
例2-4 Flask頁面重定向:app.py
01 #endoding:utf-802 from flask import Flask,url_for,redirect #導入Flask和url_for及 redirect模塊03 app = Flask(__name__) #Flask初始化04 @app.route('/') #定義路由05 def hello_world(): #定義視圖函數06 print("首先訪問了index()這個視圖函數了!") #打印輸出07 url1=url_for('user_login') #URL反轉08 return redirect(url1) #網頁重定位09 @app.route('/user_login') #定義路由10 def user_login(): #定位視圖函數11 return "這是用戶登錄頁面,請您登錄,才能訪問首頁!" #返回值12 if __name__ == '__main__': 當模塊被直接運行時,代碼將被運行,當模塊是被導入 時,代碼不被執行13 app.run()
02行表示當模塊被直接運行時,代碼將被運行,當模塊被導入時,代碼不被執行;03行表示Flask初始化;04行定義路由;05行表示定義視圖函數;06行表示打印輸出;07行表示URL反轉;08行表示網頁重定位;09行表示定義路由;10行表示定位視圖函數;11行表示返回值;12行表示當模塊被直接運行時,代碼將被運行,當模塊被導入時,代碼不被執行。
重定向是將原本的URL重新定向成為一個新的URL,可以實現頁面的跳轉。Flask中使用到了redirect()函數,需要使用from flask import redirect將其導入才能使用。這里輸入地址訪問的首先應該是index()這個視圖函數,但是index()這個視圖函數直接跳轉到了user_login視圖上,運行結果如圖2.13所示。
圖2.13 URL重定向后網頁視圖和控制臺的輸出
URL傳遞參數
Flask中如果要傳遞一個變量或者一個參數,可以通過表單和地址欄兩種方式來傳遞。其中,通過瀏覽器地址欄URL方式傳遞/獲取某個變量或參數使用得比較多。這樣,我們可以使用相同的URL指定不同的參數,來訪問不同的內容。
Flask通過URL傳遞參數,傳遞參數的語法是:'//'。需要注意兩點:參數需要放在一對<>(尖括號)內;視圖函數中需要設置同URL中相同的參數名。
下面在PyCharm中新建一名稱為2-2的工程。
例2-2 URL傳遞參數:app.py
01 #encoding:utf-8 #指定編碼02 from flask import Flask #導入Flask模塊03 app = Flask(__name__) #Flask實例化04 @app.route('/') #定義路由05 def hello_world(): #定義視圖函數06 return '這是url傳參演示!' #返回值07 @app.route('/user/') #定義路由,傳遞的參數名是name,因此 需要在函數的形參中定義同名的參數08 return "接收到的名稱為: %s" % name #返回值09 if __name__ == '__main__': # 如果某模塊被直接運行,則其 __name__為'__main__'10 app.run(debug=True) #開啟調試模式
02行表示導入Flask模塊;03行表示Flask實例化;04行定義路由;05行定義視圖函數;06行是返回值;07行定義路由;08行表示返回值;09、10行表示如果某模塊被直接運行,則其__name__為'__main__',條件為真,就開啟調試模式。
注意: 在Python中,所有沒有縮進的代碼都會被執行,__name__是Python的內建函數,指的是當前模塊的名稱,每個模塊都有自己的__name__屬性,但__name__的值是會變化的,如果某模塊被直接運行,則其__name__為'__main__',條件為真,就可以執行app.run()方法,使得整個程序得以運行。當模塊被導入時,代碼不被運行。
如果07行代碼中name沒有指定數據類型,那么默認就是string數據類型。在瀏覽器的地址欄中輸入 http://127.0.0.1:5000/user/zhangsan ,回車后便可以得到如圖2.10所示的訪問結果。
如果此時在瀏覽器地址欄輸入的內容為 http://127.0.0.1:5000/USER/zhangsan ,回車后還可以得到如圖2.8所示結果嗎?結果顯然是否定的。因為這里的user是區分大小寫的。
在if__name__=='__main__':這行代碼之上繼續增加如下代碼:
@app.route('/news/')def list_news(id):
return"接收到的id為%s"%id
在瀏覽器地址欄輸入 http://127.0.0.1:5000/news/1 ,回車后便可以得到如圖2.11所示結果。
圖2.10 URL傳字符串變量
圖2.11 URL傳遞int型參數
如果在瀏覽器的地址欄輸入 http://127.0.0.1:5000/news/1.1 ,回車后還可以得到正確的結果嗎?結果顯然也是否定的。定義成int數據類型的URL只能傳遞int類型,定義成float數據類型時,URL只能傳遞float類型,即定義的是什么數據類型,URL傳遞的參數就必須為對應的數據類型。
請點擊獲取Python開發Web書籍
總結
以上是生活随笔為你收集整理的python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vb如何实现在cad中打开dxf文件_C
- 下一篇: linux文件明明存在却无法vim打开_