2015-09-03 2 views
0

Я пытаюсь создать новую страницу с CamelCase. Я следую учебник, где они используют пользовательский фильтр Wikify страницы:Сделать ссылку с CamelCase

from django import template 
import re 

wikilink = re.compile("\\b([A-Z][a-z]+[A-Z][a-z]+)\\b") 
register = template.Library() 

@register.filter 
def wikify(value): 
    return wikilink.sub(r"<a href='/wikicamp/\1/'>\1</a>", value) 

В turtorial этот код должен работать. Я не получаю сообщение об ошибке, но в моем приложении она показывает только это:

<a href='/wikicamp/NewPage/'>NewPage</a>

и не NewPage как CamelCase «слова». Могу ли я сделать это по-другому или что я делаю неправильно?

+0

Попробуйте использовать двойные кавычки вместо одинарных кавычек –

+0

Ваш вопрос не Чисто. Как фактический выход отличается от желаемого выхода? –

+0

Я могу редактировать текст на странице. В этом тексте говорится: Это связано с NewPage. Вместо NewPage есть ссылка, это все еще строка: Это ссылки на NewPage

ответ

0

Вы должны пометить вывод как «безопасный» для HTML, который будет отображаться. Если вы доверяете любой входу, который может быть сообщен шаблоном фильтром, и вы знаете, что это не может быть злыми, вы можете сделать это следующим образом:

from django.utils.safestring import mark_safe  

@register.filter 
def wikify(value): 
    output = wikilink.sub(r"<a href='/wikicamp/\1/'>\1</a>", value) 
    return mark_safe(output) 
+0

Это не имеет никакого значения :( –

+0

Приносим извинения. У меня была неправильная маркировка process - '@ register.filter (is_safe = True)' сигнализирует, что фильтр не добавляет символы, которые могут быть экранированы. Вы добавляете HTML-теги, поэтому это явно неверно. Вместо этого см. мой отредактированный ответ выше для маркировки выходной сейф. – ryanmrubin

+0

Спасибо, человек !!! –

Смежные вопросы