How do you use url_for
in Flask to reference a file in a folder? For example, I have some static files in the static
folder, some of which may be in subfolders such as static/bootstrap
.
When I try to serve a file from static/bootstrap
, I get an error.
<link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}">
I can reference files that aren't in subfolders with this, which works.
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}">
What is the correct way to reference static files with url_for
? How do I use url_for
to generate urls to static files at any level?
In my case I had special instruction into nginx configuration file:
All clients have received '404' because nginx nothing known about Flask.
I hope it help someone.
You have by default the
static
endpoint for static files. AlsoFlask
application has the following arguments:static_url_path
: can be used to specify a different path for the static files on the web. Defaults to the name of thestatic_folder
folder.static_folder
: the folder with static files that should be served atstatic_url_path
. Defaults to the 'static' folder in the root path of the application.It means that the
filename
argument will take a relative path to your file instatic_folder
and convert it to a relative path combined withstatic_url_default
:will convert the file path from
static_folder/path/to/file
to the url pathstatic_url_default/path/to/file
.So if you want to get files from the
static/bootstrap
folder you use this code:Which will be converted to (using default settings):
Also look at
url_for
documentation.