Flask初始化对象时除了可以传入模块名,还可以传入以下参数:
- 静态目录Url路径
static_url_path
- 静态目录名称
static_folder
- 模板路径名称
template_folder
静态目录是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能够正常访问。
访问
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中的静态文件能够正常解析了。
如果不希望用户根据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静态文件:
template_folder
用于指定模板目录,用法和原理与static_folder
参数相似,这里就不再赘述。
网友评论