Реклама является популярным инструментом преобразования Text-HTML для веб-автористов. Это гораздо легче использовать, чем простые старые HTML. Многие/большинство статических генераторов сайта обеспечивают встроенный способ написания сообщений с использованием Markdown, однако добавляя его на веб-сайт Django – например, в блоге – требует дополнительного шага или два. В этом руководстве я продемонстрирую, как быстро добавить функциональность Markdown на любой веб-сайт Django.
Этот пост предполагает знание Django и как построить блог. Если вам нужен подробный обзор процесса, проверьте мою книгу Django для начинающих который проходит через здание 5 постепенно более сложных веб-приложений, включая блог!
Но на данный момент давайте начнем в командной строке с обычной командой для установки Django, создать новый проект под названием config
Настройте начальную базу данных, используя config
и начиная локальный веб-сервер, используя Runserver
команда. Я добавил шаги для установки этого кода на рабочем столе, что удобно для пользователей Mac, но каталог кода может жить в любом месте на вашем компьютере.
$ cd ~/Desktop $ mkdir markdown && cd markdown $ pipenv install django==3.0.3 $ pipenv shell (markdown) $ django-admin startproject config . (markdown) $ python manage.py migrate (markdown) $ python manage.py runserver
Перейти к http://127.0.0.1:8000. Для подтверждения страницы приветствия Django появляется как предназначено.
Приложение блога
Теперь остановите локальный сервер с Контроль + C
и создать наши основные Блог
приложение.
(markdown) $ python manage.py startapp blog
На обычном, мы должны явно добавить приложение для Stall_apps
Конфигурация внутри config/settings.py
Отказ
# config/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog.apps.BlogConfig', # new ]
Обновите config/urls.py
Файл, чтобы включить наше приложение для блога, которое будет иметь путь URL ''
пустая строка.
# config/urls.py from django.contrib import admin from django.urls import path, include # new urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')), # new ]
Модели, URL, просмотры, шаблоны
На данный момент нам нужно четыре обновления в наших Блог
приложение:
Models.py
Для модели базы данныхURLS.PY
для URL-маршрутаПросмотр .py
для нашей логикиШаблоны/post_list.html.
Для нашего шаблона
Порядок, в котором мы делаем эти изменения, не имеет значения; Нам нужны все они до того, как функциональность будет работать. Однако на практике, начиная с моделей, то URL, то взгляды, и, наконец, шаблоны – это подход, который я обычно беру.
Начните с Блог/Модели .py
Отказ
# blog/models.py from django.db import models class Post(models.Model): title = models.CharField(max_length=200) body = models.TextField() def __str__(self): return self.title
Мы должны создать наши Блог/URLS.PY
Файл вручную.
(markdown) $ touch blog/urls.py
Затем добавьте один путь к Блог/URLS.PY
для ListView
Для отображения всех постов, которые импортируют представление «Вызов» BloglistView
Отказ
# blog/urls.py from django.urls import path from .views import BlogListView urlpatterns = [ path('', BlogListView.as_view(), name='blog_list'), ]
Вот наш Блог/просмотр .py
файл.
# blog/views.py from django.views.generic import ListView from .models import Post class BlogListView(ListView): model = Post template_name = 'post_list.html'
Шаблон будет жить в пределах Шаблоны
каталог в нашем Блог
приложение Так что давайте создадим это и файл, post_list.html.
, сейчас.
(markdown) $ mkdir blog/templates (markdown) $ mkdir blog/templates/post_list.html
Шаблон петли над Object_List
от ListView
и отображает оба поля в нашей модели блога.
{% for post in object_list %}{{ post.title }}
{{ post.body }}
{% endfor %}
Чтобы завершить его, создайте файл миграции и примените его в нашу базу данных.
(markdown) $ python manage.py makemigrations blog (markdown) $ python manage.py migrate
Админ
Мы все устанавливаем, но … нам нужен способ вводить данные в наше приложение! Мы могли бы настроить формы на сам веб-сайт для этого, однако более простой подход – использовать встроенный Админ
приложение.
Создать Суперзор
учетная запись Таким образом, мы можем получить доступ к Админ
Отказ
(markdown) $ python manage.py createsuperuser
Запустите локальный сервер снова, запустив Python Manage.py Runserver
и войдите в http://127.0.0.1:8000/admin. .
Приложения не появляются в админике, если мы явно не добавляем их, так что сделайте это сейчас, обновляя Блог/admin.py
Отказ
# blog/admin.py from django.contrib import admin from .models import Post admin.site.register(Post)
Обновить страницу администратора сейчас и Блог
Приложение появляется вместе с нашими Сообщения
Модель (администратор автоматически добавляет «S» на модели). Нажмите на ссылку «+ Добавить» и создайте сообщение, написанное в Markdown.
Нажмите кнопку «Сохранить» в правом нижнем углу и перейдите к нашей домашней странице. Текст выводится без какого-либо форматирования.
Отметка
То, что мы хотим, это автоматически преобразовать нашу уценку на отформатированную HTML на сайте. Один вариант – использовать сторонний пакет, такой как Django Markdownx. , который включает в себя дополнительные функции, такие как живые редактирование, превью, размер изображения и другие, которые стоит изучить.
Тем не менее, это сверхугольника сейчас, а также аспекты, что происходит под капотом. Две доминирующие пакеты Markdown являются Реклама и Markdown2. . Мы будем использовать Реклама
В этом примере.
Во-первых, остановить локальный сервер Контроль + C
и установить Реклама
Отказ
(markdown) $ pipenv install markdown==3.2.1
Мы создадим пользовательский фильтр шаблона, который использует Markdown. Создать Templatetags
каталог в наших Блог
приложение а затем markdown_extras.py
файл.
(markdown) $ mkdir blog/templatetags (markdown) $ touch blog/templatetags/markdown_extras.py
Сам файл импортирует Реклама
Пакет и используйте Огороженный код Code расширение. Как отмечено в документах Есть несколько функций, доступных здесь, так что прочитайте документы.
# blog/templatetags/markdown_extras.py from django import template from django.template.defaultfilters import stringfilter import markdown as md register = template.Library() @register.filter() @stringfilter def markdown(value): return md.markdown(value, extensions=['markdown.extensions.fenced_code'])
Теперь мы загружаем пользовательский фильтр в наш шаблон, чтобы содержимое, написанное в Markdown, будет выводиться в качестве HTML для тело
поле.
{% load markdown_extras %} {% for post in object_list %}{{ post.title }}
{{ post.body | markdown | safe }}
{% endfor %}
Вот и все! Если вы теперь перезагрузите веб-сайт и просмотрите нашу веб-страницу, уценка мы написали в админике до того, как сейчас отображается правильно.
Следующие шаги
В настройке производства есть несколько дополнительных шагов, которые вы хотите взять. Используйте Django Формы которые поставляются с рядом встроенных ограждений. А также добавить отбеливатель для дополнительного слоя санитарии. Есть Django-beleach Пакет, который стоит посмотреть в этом отношении.
Оригинал: “https://dev.to/learndjango/django-markdown-tutorial-3d43”