2012-09-13 23 views
5

Próbuję użyć przecinania, aby uniknąć konieczności pisania kodu HTML w formularzu wiki, ale z jakiegoś powodu formularz wyświetla kod HTML zamiast zamierzonego formatowania.HTML nie renderowany w polu tekstowym Django

Moim zdaniem funkcja jest następująca:

from django.shortcuts import render_to_response 
from mywiki.wiki.models import Page 
from django.http import HttpResponseRedirect 
import markdown 


def view_page(request, page_name): 
    try: 
     page = Page.objects.get(pk=page_name) 
    except Page.DoesNotExist: 
     return render_to_response('create.html', {'page_name':page_name}) 

    content = page.content  
    return render_to_response('view.html', {'page_name':page_name, 'content':markdown.markdown(content)}) 

To mój view.html szablon:

{% extends 'base.html' %} 
{% load wikilink %} 

{% block title %}{{page_name}}{% endblock %} 

{% block content %} 
     <h1>{{page_name}}</h1> 
     {{content|wikify}} 
     <hr/> 
     <a href='/mywiki/{{page_name}}/edit/'>Edit this page?</a> 

{% endblock %} 

A to moja base.html:

<html> 
    <head> 
     <title>{{% block title %}{% endblock %}</title> 
    </head> 
    <body> 
<div> 
Menu: <a href='/mywiki/Start/'>Start Page</a> 
</div> 
     {% block content %} 
     {% endblock %} 
    </body> 
</html> 

zrobić zainstalowano przecenę, a moja wersja Django to 1.4.1 (Mac).

Dzięki.

+0

https://stackoverflow.com/questions/2080559/disable-html-escaping-in-djangos-textfield – ammarx

Odpowiedz

16

Wykorzystanie Django safe filter tak jak dla HTML nie można uciec.

{{ content|safe }} 
+1

można łańcucha filtrów? '{{content | wikify | safe}}' –

+2

tak. to możliwe, o ile wiem. – thikonom

+0

tak po prostu poszedłem i spojrzałem na dokumenty i oni się z tobą zgadzają (+1 za bardziej zwięzłą odpowiedź niż moja: P) –

1
{% autoescape off %} 
{{content|wikify}} 
{% endautoescape %} 

może ...

Powiązane problemy