0

나는 데이터베이스에 뉴스 항목을 게시하는 ModelForm을 가지고 있으며, 승인 된 포스터가 굵게 또는 기울임 체와 같은 스타일 텍스트에 특정 HTML 조각을 삽입 할 수 있도록 자바 스크립트 텍스트 영역을 사용합니다. 그러나 "안전한"필터를 사용하여 템플릿 출력을하므로 양식 위젯이 전달하려고하는 모든 HTML을 출력합니다. 여기에는 절대로 없어지지 않는 번거로운 <br> 태그가 포함되어 있기 때문에 폼 유효성 검사없이 필드를 비어있는 것으로서 보내고 중지 할 수 있습니다. <br> 태그를 필터링 할 수는 없지만 데이터에서 완전히 제거 할 수 있도록하려면 어떻게해야합니까?Django 폼에서 특정 HTML 태그를 완전히 제거합니다.

Models.py :

from django.db import models 
from django.forms import ModelForm, forms 
from django.contrib.auth.models import User 
# Create your models here. 

class NewsItem(models.Model): 
    user = models.ForeignKey(User) 
    date = models.DateField(auto_now=True) 
    news = models.TextField(max_length=100000, blank=False, help_text='HELP TEXT') 

    def __unicode__(self): 
     return u'%s %s %s' % (self.user, self.date, self.news) 

class NewsForm(ModelForm): 
    class Meta: 
     model = NewsItem 
     exclude=('user','date',) 

Views.py :

from news.models import NewsForm, NewsItem 
from django.shortcuts import render 
from django.http import HttpResponseRedirect, HttpResponse 

def news(request): 
    if request.method == 'POST': 
     item = NewsItem(user=request.user) 
     form = NewsForm(request.POST, instance=item) 
     if form.is_valid(): 
      form.save() 
     return HttpResponseRedirect('/news/') 
    else: 
     form = NewsForm() 
     news_list = NewsItem.objects.all() 
     return render(request, 'news_list.html', {'news_list': news_list, 'form': form}) 

news_list.html :

{% extends "base.html" %} 
{% block title %}News in the Corps{% endblock %} 

{% block content %} 
    <h2 id="page_h">News in the Corps</h2> 
    {% if user.is_authenticated %} 
    <h3>Post News</h3> 
     <script src="{{ STATIC_URL }}nicEdit.js" type="text/javascript"></script> 
     <script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script> 

     <div id="news_poster"> 
      <form id="news_poster" action="/news/" method="POST">{% csrf_token %} 
      {{ form }} 
      <input type="submit" value="Submit" /> 
      </form> 
     </div> 
    {% endif %} 
<ul id="events_list"> 
{% if news_list %} 
<div id="news_list"> 
{% for news in news_list %} 
    {% if news.id == 1 %} 
    <hr /> 
    {% endif %} 
    <div id="{{ news.id }}" class="news_item"> 
     <p class="poster">Posted By: {{ news.user }} | Posted On: {{ news.date }} | <a href="{% url 'news' %}#{{ news.id }}">Link</a></p> 
     <div id="news_item"> 
     {{ news.news|safe }} 
     </div> 
    </div> 
    <hr /> 
{% endfor %} 
</div> 
{% endif %} 
</ul> 
{% endblock %} 
+0

http://catherinetenajeros.blogspot.com/2013/04/strip-certain-html-tags-before-saving.html – catherine

답변

1

당신은 removetags 템플릿 필터를 시도 할 수 있습니다 여기에 관련 코드는 다음과 같습니다

{{ news.news|removetags:"br"|safe }} 
+0

그래도
태그가 렌더링됩니다. –

0

내가 도울하지만이 같은 구조 된 경우 티미 마호니로 "removetags는"작동 할 수 있습니다 제안 생각하는 것은 할 수 없습니다

{{ news.news|safe|removetags:"br"}} 

그것에게 기회를 부여하고 작동되는지 확인합니다. 나는 회답 할 것이나, 나의 업장은 제안에 대한 대답에 직접 응답 할만큼 키가 크지 않다.

+0

아니요, 여전히 "빈 문서"가 생성됩니다. –