Модель поля Django для парсера HTML? - PullRequest
0 голосов
/ 06 июля 2019

Содержимое моего models.py выглядит следующим образом:

from django.db import models

# Create your models here.
class Post(models.Model):
        title = models.CharField(max_length=256)
        pub_date = models.DateTimeField()
        image = models.ImageField(upload_to='media/')
        body = models.TextField()

        def __str__(self):
            return self.title

        def pub_date_pretty(self):
            return self.pub_date.strftime('%A %d %B %Y @ %-I:%M:%S %p')

        def summary(self):
            return self.body[:350]

Строки с 5 по 8 инициируют переменные класса модели для панели управления моего блога.Моя приборная панель выглядит так .Есть заголовок, дата публикации, изображение и текст.Инструктор Udemy предлагает обратиться к в официальном документе Django по типам / опциям поля .Я не уверен, что действительно понимаю большинство из них.Там просто так много информации.Мой вопрос ко всем вам: какой параметр поля или тип поля инициирует анализатор HTML для основного текста?Я имею в виду, когда я собираюсь создать новую запись в блоге, как мне создать форматированный текст с кнопками форматирования HTML, такими как жирный шрифт, подчеркивание и курсив?Меня не волнуют кнопки.Я просто хочу, чтобы мои HTML-теги анализировались.Обратите внимание на теги HTML Я обведен красным здесь .Как мне получить h5, hr и em для разбора?Есть ли опция / тип поля для этого?Я не вижу его в полях моделей.

1 Ответ

0 голосов
/ 06 июля 2019

Вы должны использовать внешнюю библиотеку для текстового редактора.Есть много доступных текстовых редакторов.Давайте возьмем DJANGO-CKEDITOR в качестве примера

Установка

  1. Установите или добавьте django-ckeditor в ваш путь к Python.
pip install django-ckeditor

Добавьте ckeditor к вашей настройке INSTALLED_APPS.

Выполните команду управления collectstatic: $ ./manage.py collectstatic.Это скопирует статические CKEditor необходимые медиаресурсы в каталог, заданный параметром STATIC_ROOT.

добавьте его в settings.py

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor/"

CKEDITOR_UPLOAD_PATH = "uploads/"
Добавьте URL CKEditor в файл urls.py вашего проекта:

url(r'^ckeditor/', include('ckeditor_uploader.urls')),

В вашем models.py измените тело поля с TextField() на RichTextField()
from django.db import models
from ckeditor.fields import RichTextField

# Create your models here.
class Post(models.Model):
        title = models.CharField(max_length=256)
        pub_date = models.DateTimeField()
        image = models.ImageField(upload_to='media/')
        body = models.RichTextField()

Выполнить python.manage.py makemigrations и python.manage.py migrate

Наконец в вашем admin.py файле

from django import forms
from django.contrib import admin
from ckeditor.widgets import CKEditorWidget

from .models import Post

class PostAdminForm(forms.ModelForm):
    content = forms.CharField(widget=CKEditorWidget())
    class Meta:
        model = Post
        fields = '__all__'

class PostAdmin(admin.ModelAdmin):
    form = PostAdminForm

admin.site.register(Post, PostAdmin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...