2011-12-21 3 views
3

나는 웹 응용 프로그램을위한 python에 익숙하지 않으며, 처음 시도 할 때 django를 사용하고 있습니다. 응용 프로그램에서 동적으로 라텍스 파일을 만들어야하기 때문에 라텍스 파일을 웹 요청으로 반환하고 장고 템플릿 엔진을 사용하여 콘텐츠를 동적으로 만드는 것이 가장 세련된 방법이라고 생각했습니다. 그러나 템플릿 구문은 라텍스의 특수 문자 인 문자 ({, % 및})로 구성됩니다. 따라서이 특별한 경우에는 장고 템플릿 시스템의 구문을 변경하고 싶습니다.django와 웹 요청에 대한 라텍스 코드로 응답

내 질문은 :

  1. 당신이 라텍스 파일 생성을 할 수있는 권장 방법이라고 생각합니까? 또는 파이썬을 사용하여 템플릿 파일을 열고 모든 변수에 대해 정규식을 작성해야합니다. (나는 을 정말로 장고 템플릿 방법을 선호한다!)
  2. 변수와 함수가 장고 템플릿으로 대체되는 방법을 어떻게 바꿀 수 있습니까? 예 : {{x}}에서 < < x >> 또는 그와 비슷한 것.

답변

6

AFAIK, Django 템플릿 언어는 사용자 지정 구문을 허용하지 않습니다. 다행히도 Jinja2이라는 또 다른 플러그 형 템플릿 시스템이 있습니다.

다른 사람의 LaTeX 및 Jinja2 사용 경험이 있으시면 blog post을 참조하십시오. 주제에 따라

Official Jinja2 docs.

+0

+1 당신이 저를 Jinja2를 보게 만들었 기 때문에 :) 언젠가 확실히 시도해 보겠습니다. – redShadow

+0

매우 깔끔한! 특히 기존 템플릿을 변경할 필요가 없기 때문에 특히 그렇습니다! – janoliver

2

당신은 Jinja2를 사용하거나 어쩌면 당신은 너무 기본 템플릿 시스템을 사용하여 그렇게 할 수 있습니다

75 # template syntax constants 
76 FILTER_SEPARATOR = '|' 
77 FILTER_ARGUMENT_SEPARATOR = ':' 
78 VARIABLE_ATTRIBUTE_SEPARATOR = '.' 
79 BLOCK_TAG_START = '{%' 
80 BLOCK_TAG_END = '%}' 
81 VARIABLE_TAG_START = '{{' 
82 VARIABLE_TAG_END = '}}' 
83 COMMENT_TAG_START = '{#' 
84 COMMENT_TAG_END = '#}' 
85 SINGLE_BRACE_START = '{' 
86 SINGLE_BRACE_END = '}' 
: 나는 이것을보고

라인 78 (장고 1.2)의 주위에, django/template/__init__.py의 코드를 보면

그래서 제한된 사용을 위해 상수를 일부 사용자 지정 항목으로 교체 할 수있는 기회가 있습니다.

해당 모듈의 상수를 변경하면 기본보기가 올바르게 렌더링됩니다.

+0

자, 코드에서 보았 듯이'django.template' 패키지의 전체 코드를 어플리 케이션 안에 복사하고, 이름을'template2'와 같은 것으로 변경하고 템플릿 구문 상수를 변경해야합니다 처럼; 라텍스 파일 렌더링을 위해서만'template2'의 함수를 사용하십시오 .. 아니면 그냥 Jinja를 사용하십시오 :) – redShadow

+0

나는 Jinja와 함께 가기로 결정했습니다. 어쨌든 고마워! – janoliver

관련 문제