Безопасный фильтр по-прежнему отображает теги HTML - PullRequest
0 голосов
/ 02 октября 2019

Я добавил CKEditor в свой проект django, но текст все еще показывает HTML-теги. Несмотря на то, что у меня установлен безопасный фильтр после моей переменной содержимого. Я пропускаю причину, по которой это не ускользнет от тегов HTML?

Вот моя модель:

class Post(models.Model):
    title = models.CharField(max_length = 100)
    content = RichTextUploadingField(blank=True, null=True)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='post_pics')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk})

Вот мой шаблон формы:

    <form method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class='border-bottom mb-4'>New Post</legend>
            {{ form.media }}
            {{ form | crispy }}
        </fieldset>
        <div class="form-group">
            <button type="submit" class="btn btn-outline-info">Upload</button>
            <a type="submit" class="btn btn-outline-secondary" href="/">Cancel</a>
        </div>
    </form>

Здесьмой шаблон сообщения поста:

<article class="media content-section">
    <img src="{{ post.author.profile.image.url }}" alt="profile photo" class="rounded-circle article-img">
    <div class="media-body">
        <img src="{{ post.image.url }}" class="post-img">
        <div class="article-metadata">
            <a class="mr-2" href="{% url 'user-posts' object.author.username %}">{{ object.author }}</a>
            <small class="text-muted">{{ object.date_posted | date:'F d, Y'}}</small>
            {% if object.author == user %}
            <div>
                <a href="{% url 'post-update' object.id %}" class="btn btn-outline-secondary btn-sm mt-1 mb-1">Edit</a>
                <a href="{% url 'post-delete' object.id %}" class="btn btn-outline-danger btn-sm mt-1 mb-1">Delete</a>
            </div>
            {% endif %}
        </div>
        <h2 class='article-title-detail'>{{ object.title }}</h2>
        <p class="article-content">{{ object.content | safe }}</p>
    </div>
</article>

На моей странице формы, это позволяет мне видеть текст так, как он должен выглядеть. Однако в шаблоне подробного представления он по-прежнему показывает HTML-теги и стили, а не форматированный текст.

1 Ответ

0 голосов
/ 02 октября 2019

Я выяснил причину этого. После некоторых поисков я понял, что содержимое переменной отправляется в браузер, завернутый в теги <p>, а вложенные теги абзаца являются неподходящим HTML.

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