2011-12-21 3 views
3

私はウェブアプリケーション用にPythonを初めて使いました。最初の試みでdjangoを使っています。アプリは動的にいくつかのラテックスファイルを作成する必要があるので、私はラテックスファイルをWebリクエストとして返し、djangoテンプレートエンジンを使用してコンテンツを動的に作成するのが最もエレガントな方法だと考えました。しかし、テンプレート構文はラテックスの特殊文字である文字({、%と})で構成されています。この特殊なケースでは、私はdjangoテンプレートシステムの構文を変更したいと考えています。djangoでウェブリクエストにラテックスコードで応答

私の質問は以下のとおりです。あなたは、これは、ラテックスファイルの作成を行うために推奨される方法です

  1. と思いますか?あるいは、私はPythonを使ってテンプレートファイルを開き、すべての変数に対してregexpsを作成しなければなりません。 (本当にはdjangoのテンプレート方法を好むでしょう)
  2. 変数と関数がdjangoテンプレートに代わる方法を変更するにはどうすればいいですか?例えば。 {{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 = '}' 

django/template/__init__.pyのコードを見てみると

を、ライン78(ジャンゴ1.2)ごろ、私はこれを見ました

このモジュールの定数を変更すると、デフォルトのビューが表示されなくなるため、直接monkeypatchを実行しないでください。正しく表示されます。

+0

ところで、コードから見たところでは、 'django.template'パッケージのコード全体をあなたのアプリケーションのどこかにコピーし、' template2'のような名前に変更してテンプレート構文の定数を変更する必要があります好き。 latexファイルレンダリングのためだけに 'template2'の関数を使用してください..または単にJinjaを使用してください:) – redShadow

+0

私はJinjaと一緒に行くことにしました。とにかくありがとう! – janoliver

関連する問題