第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在返回“send_file”的燒瓶函數(shù)中,代碼似乎不會(huì)在后續(xù)請(qǐng)求上運(yùn)行,但文件仍然會(huì)下載。為什么?

在返回“send_file”的燒瓶函數(shù)中,代碼似乎不會(huì)在后續(xù)請(qǐng)求上運(yùn)行,但文件仍然會(huì)下載。為什么?

RISEBY 2023-11-13 10:44:42
我正在使用具有以下路線的 Flask 代碼:@app.route('/download')def download_file():    path = "certificate.docx"    print("certificate printed")    print(os.getcwd())    return send_file(path, as_attachment=True)HTML 代碼:<p><a href="{{ url_for('.download_file') }}">Download</a></p>執(zhí)行這段代碼是為了下載名為certificate.docx.問(wèn)題是函數(shù)內(nèi)的打印語(yǔ)句download_file()實(shí)際上并未被執(zhí)行,但它仍然允許我下載文件。
查看完整描述

2 回答

?
繁華開(kāi)滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

這個(gè)問(wèn)題很可能是由 Flask 內(nèi)置的緩存引起的。這設(shè)置了Cache-Control標(biāo)頭,并適用于 Flask 提供的靜態(tài)文件,也適用于send_filesend_from_directory函數(shù)。

這可以解釋文件下載的行為,但打印語(yǔ)句未運(yùn)行。事實(shí)上,該請(qǐng)求甚至不會(huì)到達(dá)服務(wù)器。

您可以在開(kāi)發(fā)工具的網(wǎng)絡(luò)選項(xiàng)卡上直觀地看到這一點(diǎn):

https://img1.sycdn.imooc.com/65518db700017bf006560235.jpg

您可以通過(guò)在應(yīng)用程序上設(shè)置以下配置變量來(lái)禁用此功能:

app.config['SEND_FILE_MAX_AGE_DEFAULT']?=?-1

-1值禁用緩存。

您可能必須實(shí)際清除瀏覽器緩存才能使此設(shè)置生效,或者更改端點(diǎn)的 URL?/download,盡管這很不方便。

設(shè)置后請(qǐng)注意差異:

https://img1.sycdn.imooc.com/65518dc30001781a06550230.jpg

查看完整回答
反對(duì) 回復(fù) 2023-11-13
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

我假設(shè)您希望打印語(yǔ)句顯示在 HTML 中。如果這不是您想要的,我深表歉意。

首先, print 在您的示例中所做的是在服務(wù)器上輸出文本,因此文本永遠(yuǎn)不會(huì)發(fā)送到您的 HTML。

要將消息發(fā)送到 HTML,您可以flash從 Flask 導(dǎo)入。該flash函數(shù)將向您的 HTML 發(fā)送一條消息,您可以在其中接收帶有get_flashed_messages().

例子

下面我們做幾件事。

  1. 相反print,我們使用flash.?傳遞給的第一個(gè)參數(shù)flash是消息。("certificate printed"os.getcwd()) 第二個(gè)參數(shù)是消息的類別。(?"download_file")請(qǐng)注意,類別可以是完全任意的,只要模板中使用相同的類別即可。

  2. HTML 中的鏈接下方。我們調(diào)用get_flashed_messages它并將其分配給一個(gè)變量download_msgs。在這種情況下唯一的論據(jù)是category_filter=["download_file"]。這將獲取我們之前發(fā)送的所有消息flash,并僅保留具有該"download_file"類別的消息。

  3. 我們使用 來(lái)檢查消息{% if download_msgs %},使用 來(lái)循環(huán)消息{% for message in download_msgs %},并顯示每條消息。

燒瓶:

from flask import Flask, flash, send_file


app = Flask(__name__)


@app.route('/download')

def download_file():

? ? path = "certificate.docx"

? ? flash("certificate printed", "download_file")

? ? flash(os.getcwd(), "download_file")

? ? return send_file(path, as_attachment=True)

HTML:


<p>

? <a href="{{ url_for('.download_file') }}">Download</a>


? {% with download_msgs = get_flashed_messages(category_filter=["download_file"]) %}

? ? {% if download_msgs %}

? ? ? <ul class=flashes>

? ? ? {% for message in download_msgs %}

? ? ? ? <li>{{ message }}</li>

? ? ? {% endfor %}

? ? ? </ul>

? ? {% endif %}

? {% endwith %}

</p>

這個(gè)例子很粗糙,但我希望它能回答你的問(wèn)題

概括

  • 要將消息從 Flask 應(yīng)用程序發(fā)送到 HTML 代碼,您可以使用flashFlask 應(yīng)用程序中的函數(shù)。

  • 要從 Flask 應(yīng)用程序接收消息到 HTML 代碼,您可以get_flashed_messages在 HTML 代碼中使用該函數(shù)。

  • 您可以使用類別來(lái)區(qū)分閃現(xiàn)的消息。在您的燒瓶應(yīng)用程序中使用第二個(gè)參數(shù)flash。在 HTML 代碼中使用Category_filter關(guān)鍵字參數(shù)。get_flashed_messages


查看完整回答
反對(duì) 回復(fù) 2023-11-13
  • 2 回答
  • 0 關(guān)注
  • 196 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)