2014-05-24 1 views
1

사용자가 제공 한 편집 페이지가 표시됩니다. 사용자는 텍스트 영역에 입력 버튼이있는 텍스트를 입력하고 미리보기 버튼을 누르십시오. 미리보기 페이지에서 그는 그가받은 것을보고 (즉, \ n을 즉시 <br>로 바꾼다).'안전'필터가 텍스트 영역에서 작동하지 않습니다 - django

저는 safe과 같이 입력합니다 ({{inputtext|safe}}). 그러나 그가이 미리보기 입력 텍스트를 렌더링하는 편집 버튼을 누르는 경우, 입력 텍스트는 text</br></br>text과 같이 표시되며 미리보기 페이지의 모습과 다릅니다. 미리보기에서

HTML : 입력 페이지에서

{{inputtext|safe}} 
<input type="hidden" name="inputtext" value="{{inputtext}}" /> 

HTML은 :

<textarea>{{inputtext|safe}}</textarea> 
<textarea name="inputtext" style="display: none">{{inputtext}}</textarea> 

내가 할 것은 : <br/> 모든 \n 's의 교체, 사용자의 입력을 받아와에 그 새로운 InputText]를 넣어 숨겨진 된 텍스트 영역 그래서 나중에 나중에 미리 볼 수 있습니다.

내 views.py에서 단순히 렌더링합니다. 아무 일도 일어나지 않습니다 :

def addcontent(request): 
    if request.POST.get('inputtext'): 
     inputtext = request.POST.get('inputtext') 
     return render(request, 'addpage.html', {'inputtext':inputtext}) 
    else: 
     return render(request, 'addpage.html', {}) 

내가 안전하다고해도 텍스트가 줄 바꿈으로 표시되지 않는 이유는 무엇입니까? 나도 시도했다 |linebreaks 그러나 성공하지 않는다

textarea와 안전한 필터가있는 특별한 경우가 있냐?

UPDATE : 나는 텍스트 영역의 {{inputtext|safe}} outsife을 할 경우 잘 작동

(LINEBREAK 에드을 게재). 단지 텍스트 영역 안에서만, |safe 아무런 효과가 없다.

+0

양식과보기 코드를 표시 할 수 있습니까? 감사. – alecxe

+0

@alecxe 코드를 업데이트했습니다. – doniyor

답변

2

나는 문제는 텍스트 공간에 html 출력을 표시 할 수 없다고 생각한다. linebreaks 그냥 brp 태그로 줄 바꿈을 대체하십시오.

왜 코드에서 br으로 줄 바꿈을 바꾸시겠습니까? 텍스트 미리보기를 원하지만 줄 바꿈이 표시되지 않으면 CSS 스타일 white-space: pre-wrap을 사용하십시오. 입력 된 텍스트가 표시됩니다.

관련 문제