Write static pages¶
When you site is done, you can continue to serve it within your Flask app, or you can write static html pages ready to be published on the web.
Almoststatic has the method write_static
which write static pages on the
disk. It only write the pages in the location that you choose.
The is up to you to publish your pages where you need and also to copy your static contents.
The best way to write static site is to write a little script, the core of script should be:
import almoststatic
a = almoststatic.Almoststatic()
a.load_config()
STATIC_URL = '/'
MEDIA_PREFIX = 'media'
DESTINATION = '../_static_site'
OUT_PAGES = ['write_static', 'write_done']
a.write_static(destination=DESTINATION,
media_prefix=MEDIA_PREFIX,
static_url=STATIC_URL,
out_pages=OUT_PAGES)
a.write_json_meta(destination=DESTINATION)
The destination
parameter is the location where files will be written in
your disk.
The static_url
parameter lets you to set location of files starting from
your url, i.e. if your site goes on https://mystatic.example.com/my_pages/
static_url
will be /my_pages/
. If your pages will be read from file
system you should leave static_url
as an empty string so urls are treated
as relative. If files goes on root of your domain static_url
should be /
because this optimize the browser cache.
The media_prefix
parameter let you to change the location of media files
from ‘/content/media’ which is the default in the development environment to
the location where they will be in static site.
Consider that the write_static
when is working changes the global variable
is_static
from False to True, so if in development time you have some pages
that you don’t like to have in the static site, you can exclude them inspecting
the value of that variable.
By default, write_static
writes all pages of site, but if you need, you
can choose the pages to write setting the pages
parameter or the
out_pages
parameter.
The write_json_meta
method let you write on a json file, all metadata for
pages. This can be used to write some JavaScript on client side to access to
information about pages.
If you wish, you can add to your script all you need to automate the publishing
of site, like client ftp commands or automatic copying of media files and so on,
see flaskapp.py
of the sample folder to see automatic ftp publishing in
action.