Рубрики
Без рубрики

Создание легкого блога CMS В 10 строк кода

С тех пор запуска одно слово Domains пять месяцев назад, я хотел создать блог, где я Коу … с питоном, колба, JavaScript, блог с меткой.

С момента запуска Одно слово доменов пять месяцев назад, я хотел создать блог, где я мог бы:

  1. Документ мой Процесс сборки
  2. Написать о некоторых из самых классных советов по программированию и приемов, которые я узнал в процессе (этот блог пост один из них)
  3. Поделитесь некоторое представление о доменной индустрии – то есть то, что некоторые из верхней соглашения об именовании в Силиконовой долине

Тем не менее, я быстро побежал в дилеммой, пытаясь найти подходящую блоггинг 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”