小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

夢(mèng)琪小生undefined【Python】【Flask】Flaskundefined后臺(tái)發(fā)送html頁(yè)面多種方法

 刮骨劍 2019-06-26

1、使用模板:

@app.route('/')def home():return render_template("homepage.html")#homepage.html在templates文件夾下

2、使用 send_from_directory

root = os.path.join(os.path.dirname(os.path.abspath(__file__)), "html")#html是個(gè)文件夾@app.route('/')def home():return send_from_directory(root, "homepage.html")#homepage.html在html文件夾下

3、使用 app.send_static_file

app = Flask(__name__,static_url_path='')#修改靜態(tài)文件夾的目錄@app.route('/')def home():return app.send_static_file('homepage.html')#homepage.html在static文件夾下

4、flask 調(diào)用 css文件

app = Flask(__name__,static_url_path='') 
@app.route('/')
def home():
return app.send_static_file('html/homepage.html')
 <link rel="stylesheet" type="text/css" href="../css/homepagestyle.css">#html里面引用css

 文件夾結(jié)構(gòu)目錄

 

注意:css文件必須在靜態(tài)文件夾下,否則css調(diào)用不了

以下內(nèi)容來(lái)自 https://www.cnblogs.com/shengulong/p/7106166.html 只為記錄下

flask中的g、add_url_rule、send_from_directory、static_url_path、static_folder的用法

一:Flask中的g對(duì)象

    Flask中的g對(duì)象是個(gè)很好的東西,主要用于在一個(gè)請(qǐng)求的過(guò)程中共享數(shù)據(jù)??梢噪S意給g對(duì)象添加屬性來(lái)保存數(shù)據(jù),非常的方便,下面的代碼是一個(gè)使用g對(duì)象的例子。下面的這個(gè)例子會(huì)使用random隨機(jī)產(chǎn)生一個(gè)0~9的整數(shù),并使用g.x保存并記錄debug日志:

復(fù)制代碼
# encoding=utf-8
from flask import Flask
from flask import g
import random
 
app = Flask(__name__)
 
@app.before_request
def set_on_g_object():
    x = random.randint(0,9)
    app.logger.debug('before request g.x is {x}'.format(x=x))
    g.x = x
 
@app.route("/")
def test():
    g.x=1000
    return str(g.x)
 
@app.after_request
def get_on_g_object(response):
    app.logger.debug('after request g.x is{g.x}'.format(g=g))
    return response
復(fù)制代碼

二:Flask中靜態(tài)文件的處理

1.add_url_rule的用法

    Flask中提供了url_for來(lái)實(shí)現(xiàn)創(chuàng)建url,只是生成一個(gè)url。在前面的博文中談?wù)撨^(guò)如果要生成一個(gè)css樣式的靜態(tài)文件的url需要使用url_for('static',filename='style.css')來(lái)創(chuàng)建相應(yīng)的url。但是如果我有一個(gè)目錄attachment的目錄存放一些文件的話是沒(méi)法通過(guò)url_for來(lái)生成的,默認(rèn)url_for只可以為static和一些view_func建立url如果要想通過(guò)url_for為attachment來(lái)添加url就必須添加一個(gè)add_url_rule。

復(fù)制代碼
# encoding=utf-8
from flask import Flask
from flask import g
from flask import send_from_directory
from flask import url_for
import random
 
app = Flask(__name__)
 
@app.route("/")
def test():
    return "url創(chuàng)建方式一"
 
def hello():
    return "url創(chuàng)建方式二"
 
app.add_url_rule("/index/",endpoint="hello",view_func=hello)
 
@app.route('/url1')
def Create_url1():
    return url_for('static',filename="style.css")
 
app.add_url_rule('/attachment/<path:filename>',endpoint='attachment',build_only=True)
@app.route('/url2')
def Create_url2():
    return url_for('attachment',filename="upload.txt")
復(fù)制代碼

2.send_from_directory的用法

send_from_directory主要用于下載文件:

下面是一個(gè)文件的下載實(shí)例

復(fù)制代碼
# encoding=utf-8
from flask import Flask
from flask import g
from flask import send_from_directory
from flask import url_for
import os.path
 
app = Flask(__name__)
dirpath = os.path.join(app.root_path,'upload')
@app.route("/download/<path:filename>")
def downloader(filename):
    return send_from_directory(dirpath,filename,as_attachment=True)
復(fù)制代碼

首選在application下建立一個(gè)upload目錄,構(gòu)造upload目錄的絕對(duì)路徑。

然后通過(guò)瀏覽器輸入指定文件的文件名來(lái)下載。

3.static_url_path和static_folder的用法

static_url_path主要用于改變url的path的,靜態(tài)文件放在static下面,所以正常情況url是static/filename ,但是可以通過(guò)static_url_path來(lái)改變這個(gè)url

static_folder主要是用來(lái)改變url的目錄的,默認(rèn)是static,可以通過(guò)這個(gè)變量來(lái)改變靜態(tài)文件目錄。

復(fù)制代碼
# encoding=utf-8
from flask import Flask
from flask import g
from flask import send_from_directory
from flask import url_for
import os.path
 
app = Flask(__name__,static_url_path="/test")
 
@app.route("/")
def static_create():
    return url_for('static',filename='style.css')
復(fù)制代碼

4.靜態(tài)頁(yè)面緩存和文件索引

SEND_FILE_MAX_AGE_DEFAULT 這個(gè)變量用于配置靜態(tài)文件緩存的時(shí)間,F(xiàn)lask默認(rèn)緩存時(shí)間是12hours

例如: app.comfig['SEND_FILE_MAX_AGE_DEFAULT']=2592000 將其緩存時(shí)間改為了30天。

Flask不能實(shí)現(xiàn)文件索引的功能,也就是無(wú)法列出文件名,這個(gè)需要web server(Nginx 或 Apache)來(lái)實(shí)現(xiàn)。

5、session 也是一個(gè) request context 的變量,但它把數(shù)據(jù)保存到了 cookie 中并發(fā)送到了客戶端,客戶端再次請(qǐng)求的時(shí)候又帶上了cookie

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多