Flask02.Flask对象初始化参数

2019-09-29  本文已影响0人  意爹闯天涯

Flask初始化对象时除了可以传入模块名,还可以传入以下参数:

静态目录是Flask服务器提供给用户可直接访问的目录,一般存放静态资源,如html、css、js、图片等。
默认情况下静态目录的名称为static,只有flask服务器对应的静态目录中存放的静态资源才能供用户直接通过URL访问。为了说明这个规则,我们举例来说明以下。
项目下创建static目录及static2目录,static目录放置静态网页1.html,'static2'目录防止静态网页2.html。

项目目录
1.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>静态页面1</title>
</head>
<body>
第一个静态页面。
</body>
</html>

2.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>静态页面2</title>
</head>
<body>
第二个静态页面
</body>
</html>

index.py:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return "hello flask"


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

index.py执行后,开启服务器被开启并输出:

D:\Code\Python\easyflask\venv\Scripts\python.exe D:/Code/Python/easyflask/index.py
 * Serving Flask app "index" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

开启服务器后,通过访问http://127.0.0.1:5000/static/1.html,可以看到static目录下的1.html能够正常访问。

1.html
访问http://127.0.0.1:5000/static2/2.html,出现404页面:
image.png
由此可以发现,只有服务器默认的静态目录下的静态文件才能够直接通过URL访问。
可以在初始化Flask对象时通过指定static_folder参数来改变默认的静态目录的名字,修改index.py:
from flask import Flask

app = Flask(__name__, static_folder="static2")


@app.route('/')
def index():
    return "hello flask"


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

代码中,将默认的静态文件目录修改为了static2,再次访问http://127.0.0.1:5000/static2/2.html,可以看到static2中的静态文件能够正常解析了。

2.html
如果不希望用户根据URL中的路径很轻易猜出静态目录的真实名称,可以通过static_url_path参数来为这个静态目录指定URL路径:
from flask import Flask

app = Flask(__name__, static_folder="static2", static_url_path='/hahah/wawawa')


@app.route('/')
def index():
    return "hello flask"


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

这里将项目根目录下的静态资源目录static2指定为URL路径为/hahah/wawawa,这是可通过http://127.0.0.1:5000/hahah/wawawa/2.html来访问2.html静态文件:

2.html
template_folder用于指定模板目录,用法和原理与static_folder参数相似,这里就不再赘述。
上一篇 下一篇

猜你喜欢

热点阅读