Django 템플릿에서 {{또는}}을 이스케이프하는 방법은 무엇입니까?
Django는 {{ var }}
템플릿에서 일부 변수로 취급합니다 . 나는 벗어날 수있는 방법 {{ var }}
이나 {{
또는 }}
장고 변수로 취급하지 않도록.
<p>"{{ some text }}"</p>
정확히 동일하게 인쇄해야합니다.
templatetag
템플릿 태그를 찾고 있다고 생각합니다 .
링크 된 문서에 따르면
템플릿 시스템에는 "이스케이프"개념이 없으므로 템플릿 태그에 사용 된 비트 중 하나를 표시하려면
{% templatetag %}
태그 를 사용해야합니다 .
예를 들면 :
<p>"{% templatetag openvariable %} some text {% templatetag closevariable %}"</p>
다음과 같이 나타납니다.
<p>"{{ some text }}"</p>
Django 1.5는 {% verbatim %}
템플릿 태그를 도입했습니다 . 템플릿이이 태그의 내용을 구문 분석하는 것을 중지합니다.
{% verbatim %}
{{ var }}
{% endverbatim %}
다음과 같이 렌더링됩니다.
{{ var }}
편집 : 매우 깨끗하지 않기 때문에 이것을 권장하지는 않지만 여전히 옵션입니다.
나는 JQuery Templates와 함께 사용할 수있는 것을 찾고 있었고 태그 나 필터없이 그것을 할 수있는 방법을 찾았다. 이것은 내가 얻을 수있는 한 짧습니다.
{{ "{{ any text }" }}}
다음과 같이 인쇄됩니다.
{{ any text }}
왜 작동합니까? 행에 두 개의 닫는 중괄호}}가없는 한 {{}} 내의 모든 텍스트는있는 그대로 표시됩니다. 그런 다음 연속으로 세 개의 괄호가 있습니다. django는 첫 번째 두 개를 변수의 끝으로 해석하여 하나의 추가 닫는 중괄호를 남깁니다.
다음과 같은 html 문자 이스케이프를 사용하여 이스케이프를 시도 할 수 있습니다.
{= {
} = }
<p>"{{ some text }}"</p>
브라우저 내에서 시도해보십시오.
angularjs와 같은 템플릿 프레임 워크의 변수로 {{}}를 사용하기 만하면 다음과 같이 할 수 있습니다.
에 <app path>/templatetags/ngvar.py
추가
from django import template
register = template.Library()
@register.simple_tag
def ngvar(var_name):
return "{{%s}}" % var_name
템플릿에서
{% load ngvar %}
{% ngvar "variable name" %}
ngvar.py가 첫 번째 템플릿 태그 인 __init__.py
경우 templatetags
디렉토리 에 파일을 추가해야합니다.
위의 답변으로 원래 문제를 해결할 수 있지만 나처럼 머리를 긁는 사람들을 위해 여기에 몇 가지 해킹을 추가합니다.
때때로 우리는 하나의 중괄호 뒤에 변수를 렌더링하려고합니다. 예를 들어 BibTeX에는 다음과 같은 내용이있을 수 있습니다.
@MISC{hu2012-spectral,
author = {Hu, Pili},
title = {Spectral Clustering Survey},
howpublished = {GitHub, https://github.com/hupili/tutorial/tree/master/spectral-clustering},
month = {May},
year = {2012}
}
이러한 bib 필드는 템플릿 변수에서 가져옵니다. 당신이 쓰면
title = {{{title}}},
jinja는 컴파일 할 수없고 오류가 발생합니다. 당신이 쓰면
title = { {{title}} },
추가 공백이 있습니다. 해킹은 '{'및 '}'를 변수로 저장하고 나중에 사용하는 것입니다.
{% set lb = '{' %}
{% set rb = '}' %}
...
@MISC{{lb}}{{ meta.bib_key }},
author = {{lb}}Hu, Pili{{rb}},
title = {{lb}}{{ meta.title }}{{rb}},
howpublished = {{lb}}GitHub, https://github.com/hupili/tutorial/tree/master/{{ auto.path}}{{rb}},
month = {{lb}}{{ meta.month }}{{rb}},
year = {{lb}}{{ meta.year }}{{rb}}
}
어색해 보이지만 지금까지 찾은 것이 최고입니다. 더 깨끗한 솔루션이 있으면 알려주세요.
또 다른 옵션은 각 중괄호 사이에 단어 결합 자 (폭이없는 공백 없음) 를 추가하는 것입니다 .
<p>"{⁠{ some text }⁠}"</p>
This template tag (designed for use with jQuery Templates) might do the trick. It let's you wrap content you don't want Django to interpret as variables with a template tag.
Jinja, which is what is being used for the templates, offers several suggestions for escaping here. What has worked best for me is using something like "{% raw %}{{ some text }}{% endraw %}"
it can be solved by avoing adjacent angular backets, if its inside javascript code then you can write
'{'+'{address.'+key+'}}'
I used this to print jinja variables into another template,using javascript.
참고URL : https://stackoverflow.com/questions/7772001/how-to-escape-or-in-django-template
'Program Tip' 카테고리의 다른 글
객체 지향 언어의 HAS-A, IS-A 용어 (0) | 2020.12.09 |
---|---|
Android Spinner를 팝업으로 생성하려면 어떻게해야합니까? (0) | 2020.12.09 |
자바 스크립트는 주어진 크기의 빈 배열을 만듭니다. (0) | 2020.12.09 |
AWS Lambda 함수가 CloudWatch에 로깅 (텍스트 출력)하도록 할 수 없음 (0) | 2020.12.09 |
유형 오류 : $ .browser가 정의되지 않았습니다. (0) | 2020.12.09 |