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

Учебное пособие по умолчанию Django

Markdown – это популярный инструмент преобразования Text-HTML для веб-автористов. Это гораздо легче использовать, чем Plai … Теги с Джанго, Питоном, Учебником, начинающими.

Реклама является популярным инструментом преобразования 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”