Markdown blog on Flask with Vite-built assets and WeasyPrint PDF export, rewritten from the Wagtail build that preceded it.
blogdockerflaskmarkdownpythonself-hostedvite
1{% extends 'base.html' %}
2
3
4{% block extra_head %}
5{% include "includes/social.html" %}
6{% endblock %}
7
8
9{% block main %}
10<div class="container mt-5">
11 <div class="row">
12 <div class="col">
13 <h1>{{ page.title }}</h1>
14 </div>
15 </div>
16</div>
17<div class="container">
18 <div class="row">
19 <div class="col-sm-6">
20 {% include 'includes/search_form.html' %}
21 </div>
22 </div>
23</div>
24<div class="container mt-5">
25 <div class="row">
26 {% if results %}
27 {% for blog_post in results %}
28 <div class="col-12 col-sm-6 col-md-4 mb-5">
29 {% include "includes/blog_post_card.html" %}
30 </div>
31 {% endfor %}
32 {% elif q %}
33 <div class="col">
34 <div class="alert alert-warning d-flex align-items-center row g-1">
35 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-exclamation-circle-fill col-2 col-md-1" viewBox="0 0 16 16">
36 <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
37 </svg>
38 <div class="col-10 col-md-11">No results found, please try something else.</div>
39 </div>
40 </div>
41 {% else %}
42 <div class="col">
43 <div class="alert alert-info d-flex align-items-center row g-1">
44 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-info-circle-fill col-2 col-md-1" viewBox="0 0 16 16">
45 <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
46 </svg>
47 <div class="col-10 col-md-11">Submit a query above to see some results.</div>
48 </div>
49 </div>
50 {% endif %}
51
52 {% if random_posts %}
53 <div class="container mt-5 d-print-none">
54 <div class="row">
55 <div class="col">
56 <div class="section-label mb-1">
57 Random Posts
58 </div>
59 <p class="text-muted">If you don't know what to search for check out some of these posts.</p>
60 </div>
61 </div>
62 <div class="row">
63 {% for blog_post in random_posts %}
64 <div class="col-12 col-sm-6 col-md-4 mb-5">
65 {% include "includes/blog_post_card.html" %}
66 </div>
67 {% endfor %}
68 </div>
69 </div>
70 {% endif %}
71 </div>
72</div>
73{% endblock %}