Как обслуживать статические файлы в FlaskPython

Программы на Python
Ответить
Anonymous
 Как обслуживать статические файлы в Flask

Сообщение Anonymous »

У меня есть приложение, которое я создал во Flask, и на данный момент оно просто обслуживает одну статическую HTML-страницу с некоторыми ссылками на CSS и JS. И я не могу найти, где в документации Flask описывается возврат статических файлов. Да, я мог бы использовать render_template, но я знаю, что данные не шаблонизированы. Я думал, что send_file или url_for — это правильно, но мне не удалось заставить их работать. Тем временем я открываю файлы, читаю содержимое и настраиваю ответ с соответствующим mimetype:

Код: Выделить всё

import os.path

from flask import Flask, Response

app = Flask(__name__)
app.config.from_object(__name__)

def root_dir():  # pragma: no cover
return os.path.abspath(os.path.dirname(__file__))

def get_file(filename):  # pragma: no cover
try:
src = os.path.join(root_dir(), filename)
# Figure out how flask returns static files
# Tried:
# - render_template
# - send_file
# This should not be so non-obvious
return open(src).read()
except IOError as exc:
return str(exc)

@app.route('/', methods=['GET'])
def metrics():  # pragma: no cover
content = get_file('jenkins_analytics.html')
return Response(content, mimetype="text/html")

@app.route('/', defaults={'path': ''})
@app.route('/
')
def get_resource(path):  # pragma: no cover
mimetypes = {
".css": "text/css",
".html": "text/html",
".js": "application/javascript",
}
complete_path = os.path.join(root_dir(), path)
ext = os.path.splitext(path)[1]
mimetype = mimetypes.get(ext, "text/html")
content = get_file(complete_path)
return Response(content, mimetype=mimetype)

if __name__ == '__main__':  # pragma: no cover
app.run(port=80)
Кто-то хочет предоставить пример кода или URL-адрес?


Подробнее здесь: https://stackoverflow.com/questions/206 ... s-in-flask
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»