📜  加载静态 - Python (1)

📅  最后修改于: 2023-12-03 15:22:46.705000             🧑  作者: Mango

加载静态 - Python

在Web开发过程中,我们通常需要加载静态资源,如CSS、JavaScript、图片等文件。在Python中,我们可以使用Flask框架提供的url_forstatic函数来加载静态资源。

1. url_for函数

url_for函数用于生成指定视图函数的URL,它接受视图函数的名称和参数作为参数。当我们使用url_for函数加载静态资源时,它会根据应用程序的配置和static_url_path选项的值来生成资源的URL。

from flask import Flask, url_for

app = Flask(__name__)

@app.route('/')
def index():
    css_url = url_for('static', filename='css/style.css')
    js_url = url_for('static', filename='js/main.js')
    img_url = url_for('static', filename='img/logo.png')
    return f'''
        <html>
        <head>
            <link rel="stylesheet" href="{css_url}">
            <script src="{js_url}"></script>
        </head>
        <body>
            <img src="{img_url}">
        </body>
        </html>
    '''

if __name__ == '__main__':
    app.run()

在上面的示例代码中,我们使用url_for函数生成style.cssmain.jslogo.png的URL,然后将这些URL用于HTML中的linkscriptimg标签。

2. static函数

static函数用于直接加载静态资源,它的参数是资源的相对路径(相对于static_url_path选项的值)。与url_for函数不同的是,static函数不会返回URL,而是直接返回资源的内容。

from flask import Flask, render_template_string, static

app = Flask(__name__)

@app.route('/')
def index():
    css_content = static('css/style.css')
    js_content = static('js/main.js')
    img_content = static('img/logo.png')
    return render_template_string(f'''
        <html>
        <head>
            <style>{css_content}</style>
            <script>{js_content}</script>
        </head>
        <body>
            <img src="data:image/png;base64,{img_content}" alt="Logo">
        </body>
        </html>
    ''')

if __name__ == '__main__':
    app.run()

在上面的示例代码中,我们使用static函数直接加载style.cssmain.jslogo.png的内容,然后将这些内容用于HTML中的stylescriptimg标签。

总结

在Python中,我们可以使用Flask框架提供的url_forstatic函数来加载静态资源。url_for函数用于生成资源的URL,适用于大部分情况;static函数用于直接加载资源的内容,适用于一些特殊情况。