С момента запуска Одно слово доменов пять месяцев назад, я хотел создать блог, где я мог бы:
- Документ мой Процесс сборки
- Написать о некоторых из самых классных советов по программированию и приемов, которые я узнал в процессе (этот блог пост один из них)
- Поделитесь некоторое представление о доменной индустрии – то есть то, что некоторые из верхней соглашения об именовании в Силиконовой долине
Тем не менее, я быстро побежал в дилеммой, пытаясь найти подходящую блоггинг CMS (система управления контентом) для моих потребностей:
- WordPress легко установить, но также избыточна – мне не нужно 15 различных подстраниц и полноценную систему управления пользователями (я уже с использованием PostgreSQL для этого)
- Ghost – это немного сложнее, чтобы настроить (вот отличный Руководство Если вы в этом), но потребуется создать дополнительному дипному на Heroku или VPS на цифровом океане – что означало бы дополнительно 5 – 7 долларов в месяц
- Среда относительно обезболивает, чтобы настроить, но довольно ограничено, когда речь идет о настройке + вы на самом деле не помогаете SEO вашего сайта с вашими сообщениями, поскольку вы будете вносить вклад в SEO Media
Что я искал, был Простое и бесплатное решение для статического сайта что было легко настроить + хорошо интегрируется с существующим стеком (Heroku, Колба, PostgreSQL, Python, HTML/CSS, JavaScript, JQuery).
Я решил посоветоваться с моим другом Линус , Который рекомендовал Python-Markdown библиотека – что та же структура, что Пеликан (Версия Python Hugo ) использует.
Заинтригованный, я начал исследовать происхождение библиотеки Python-Markdown, и это, когда я наткнулся на это блог пост Джеймс Хардинг. 10 строк кода спустя, я успешно настроил свой собственный статический сайт MOY STATEDOND для Одно слово доменов блог Отказ
Вот как все упало, шаг за шагом:
Во-первых, я импортировал Flask-Flatpages
и Реклама
Библиотеки:
import markdown from flask_flatpages import FlatPages
… и объявил их в моей требования .txt
файл:
Flask-FlatPages==0.7.1 Markdown==3.2.1
Так как я уже существующее приложение КОЛБЫ и работает, все, что я сделал следующий был добавить /посты
Папка в корневом каталоге, отдельную папку под названием блог-изображения
под /Статические/активы
Папка и несколько шаблонов файлов в /Шаблоны
папка. Вот приблизительный обзор о том, как были структурированы мои папки:
├──app.py ├──posts │ └──post1.md │ └──post2.md ├──templates │ └──blog.html │ └──post.html └──static └──assets │ └──blog-images └──script └──styles
Перед тем как я приступил к созданию маршрутов КОЛБУ для моего блога, я определил ENV
переменные для FlatPages
в моем app.py
файл, сразу после начала приложения КОЛБЫ:
FLATPAGES_EXTENSION = '.md' FLATPAGES_ROOT = '' POST_DIR = 'posts' flatpages = FlatPages(app) app.config.from_object(__name__)
Здесь я определил Flatpages_root
как ''
потому что папка, содержащая все мои файлы уценки, сообщения
, Находится в корневом каталоге – поэтому POST_DIR
определяется как 'Post'
Отказ
Вот 10 строк кода, которые я упоминал ранее, – которые я вставленные в мой app.py
файл:
@app.route("/blog") def blog(): posts = [p for p in flatpages if p.path.startswith('posts')] posts.sort(key=lambda item:dt.strptime(item['date'], "%B %d, %Y"), reverse=True) return render_template("blog.html", posts=posts) @app.route("/blog/") def blog_post(permalink): path = '{}/{}'.format('posts', permalink) post = flatpages.get_or_404(path) return render_template('post.html', post=post)
Я знаю, я не мог поверить, что это либо.
10 строк кода Python все, что мне нужно, чтобы получить одно слово Domains блог и работает.
Давайте погрузиться глубже в линии кода выше и посмотрим, что делает каждый из них:
- Первый маршрут,
/Блог
проводит целевую страницу блога. Здесь код, итерации по всем файлам Markdown, присутствующих в/посты
папку и интерпретирует их в видеflatpages
объект. Тогда сортирует их в поручении по поводу опубликованной даты – здесь я используюDT.STSTRPTIME ()
метод, потому что мои даты записываются в формате естественного языка ( 30 октября 2020 ). Наконец, код оказываетblog.html
Шаблон и отправляет все сообщения в виде переменных Jinja. - Второй маршрут,
/блог/
Заботается о отдельных постах в блоге. Первая строка кода создает составное путь для каждого из файлов Markdown, который находится в формате/posts/post1.md
Отказ Затем он получает файлы сFlatPages
Модуль и рендерыpost.html
шаблон вместе со всеми атрибутами конкретного блога.
Давайте посмотрим на формат данного файла Markdown, скажем, один для этого блога , Например:
title: Building A Lightweight Blogging CMS In 10 Lines of Code subtitle: This is the full story of how The One Word Domains blog was built - with 10 lines of Python code, the Flask-Flatpages library, and a bunch of Markdown files. date: November 2, 2020 image: post2-thumbnail.png permalink: markdown-flask-lightweight-cms Ever since launching One Word Domains five months ago... (content)
Как вы можете видеть, каждый файл Markdown имеет следующие атрибуты:
название
: Название блогасубтитры
: Подзаголовок, или «Слоган» в блоге, как правило, написаны, чтобы дать больше контекста на постДата
: Дата сообщение в блоге был опубликованизображение
: Миниатюрное изображение для записи блога, хранящимся в/статический/активы/блог-изображения
папки, которые я упоминал ранееПостоянная ссылка
: Канонический URL для поста блога. Protip: попытаться использовать дефис и держать это ниже 74 символов так, чтобы он не обрезан в результатах поискасодержание
илиHTML
: Основная большая часть контента в блоге
Вот грубый контур мой blog.html
шаблон:
{% for post in posts %}{{ post.title }}
{{ post.date }}
{{ post.subtitle }}
{% endfor %}
Этот код переполняет все файлы Markdown в /посты
Папка, которую я устанавливаю ранее и автоматически генерирую превью для каждого из них.
И вот один для моего post.html
файл:
{{ post.title }}
{{ post.date }}
{{ post.html|safe }}
Если все прошло хорошо, ваш блог должен жить в 127.0.0.1:5000/blog.
Как только вы запустите $ python app.py
в вашем терминале. Ура!
Или, если вы похожи на меня, и вы столкнетесь с кучей ошибок в первые несколько попыток – не сдаваться! Отладка кода, вставляя сообщения об ошибках в Google и нажав на первый пост StackOverflow, который выскакивает.
Удачи!
Я первый начал редактировать мои файлы Markdown в Sublime, который был довольно механически и громоздким.
Тогда все изменилось, когда пожарная нация атаковала, я обнаружил этот бесплатный инструмент, Типора (или, по крайней мере, ” бесплатно во время бета “, как указано на их сайте). Интуитивный и бесшовной опыт написания, что Typora обеспечивает не имеет себе равных, и в то время ** это не реклама, я настоятельно рекомендую попробовать.
Оригинал: “https://dev.to/steventey/building-a-lightweight-blogging-cms-in-10-lines-of-code-e1a”