Как добавить пользовательские элементы HTML и изображения в блог в Django? - PullRequest
0 голосов
/ 22 июня 2019

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

Посмотрев на какое-то решение, я нашел в Django нечто, называемое плоскими страницами, которые предоставляют возможность писать HTML. Но рекомендуется использовать его для страниц «О нас» и «Свяжитесь с нами». Должен ли я использовать это?

Я хочу сделать это, так как могу написать свои собственные данные HTML для каждого блога и добавить несколько изображений, чтобы структура HTML не была похожа в каждом блоге.

Например, в случае WordPress, он позволяет пользователю полностью писать каждую часть блога, кроме заголовочной части, и структура HTML не всегда постоянна.

Я хочу такую ​​функциональность. Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 22 июня 2019

То, что вы ищете, это загрузить изображения и вставить их в виде HTML в поле вашего контента. Это можно сделать с помощью редактора WYSIWYG, такого как CKEditor. В CK вы можете написать свой текст, отформатировать его и загружать файлы. Вы можете использовать django-ckeditor для выполнения тяжелой работы за вас: https://github.com/django-ckeditor/django-ckeditor

В вашем шаблоне вы должны отобразить ваш контент с помощью безопасного фильтра, чтобы контент отображался в формате html:

    {{ post.content |safe }}
0 голосов
/ 22 июня 2019

Существует множество пакетов, которые уже делают это. Вы можете обратиться к Django Packages и выбрать тот, который больше всего соответствует вашим потребностям.

Мезонин является одним из наиболее распространенных. Я лично этим не пользовался.
Я видел, как Django-cms использовался на одной из моих предыдущих работ. Это было довольно мощно, но мне лично не понравилось.

Если вы хотите создать свою собственную CMS, вы можете использовать очень простую структуру, такую ​​как

class BlogImage(models.Model):
    image = models.ImageField()
    alt_text = models.CharField(max_length=128)

class BlogPost(models.Model):
    title = models.CharField(max_length=512)
    content = models.TextField()  # be sure to validate that this does not contain bad code
    tags = models.ManyToMany(Tag)

Предоставьте пользователям редактор WYSIWYG, такой как CKEditor . Если пользователи хотят включить изображения, просто нужно использовать URL-адрес к нему. Если они хотят загрузить, дайте им модальную или другую страницу для загрузки изображения и скопируйте ссылку на изображение в HTML-разметку

0 голосов
/ 22 июня 2019

Вы пробовали использовать статический каталог? Он хранит статический контент, такой как CSS, изображение и т. Д. Создайте статический файл и присоедините его к файлу BASE_DIR в файле settings.py. Полное объяснение дано здесь. https://docs.djangoproject.com/en/2.2/howto/static-files/

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