晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/share/doc/python3-jinja2/html/ |
Upload File : |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Integration — Jinja2 2.10.1 documentation</title>
<link rel="stylesheet" href="_static/jinja.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Switching from other Template Engines" href="switching.html" />
<link rel="prev" title="Extensions" href="extensions.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="switching.html" title="Switching from other Template Engines"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="extensions.html" title="Extensions"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">Jinja2 2.10.1 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="integration">
<h1>Integration<a class="headerlink" href="#integration" title="Permalink to this headline">¶</a></h1>
<p>Jinja2 provides some code for integration into other tools such as frameworks,
the <a class="reference external" href="http://babel.pocoo.org/">Babel</a> library or your favourite editor for fancy code highlighting.
This is a brief description of whats included.</p>
<p>Files to help integration are available
<a class="reference external" href="https://github.com/pallets/jinja/tree/master/ext">here.</a></p>
<div class="section" id="babel-integration">
<span id="id1"></span><h2>Babel Integration<a class="headerlink" href="#babel-integration" title="Permalink to this headline">¶</a></h2>
<p>Jinja provides support for extracting gettext messages from templates via a
<a class="reference external" href="http://babel.pocoo.org/">Babel</a> extractor entry point called <cite>jinja2.ext.babel_extract</cite>. The Babel
support is implemented as part of the <a class="reference internal" href="extensions.html#i18n-extension"><span class="std std-ref">i18n Extension</span></a> extension.</p>
<p>Gettext messages extracted from both <cite>trans</cite> tags and code expressions.</p>
<p>To extract gettext messages from templates, the project needs a Jinja2 section
in its Babel extraction method <a class="reference external" href="http://babel.pocoo.org/en/latest/messages.html#extraction-method-mapping-and-configuration">mapping file</a>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[jinja2: **/templates/**.html]</span>
<span class="na">encoding</span> <span class="o">=</span> <span class="s">utf-8</span>
</pre></div>
</div>
<p>The syntax related options of the <code class="xref py py-class docutils literal notranslate"><span class="pre">Environment</span></code> are also available as
configuration values in the mapping file. For example to tell the extraction
that templates use <code class="docutils literal notranslate"><span class="pre">%</span></code> as <cite>line_statement_prefix</cite> you can use this code:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[jinja2: **/templates/**.html]</span>
<span class="na">encoding</span> <span class="o">=</span> <span class="s">utf-8</span>
<span class="na">line_statement_prefix</span> <span class="o">=</span> <span class="s">%</span>
</pre></div>
</div>
<p><a class="reference internal" href="extensions.html#jinja-extensions"><span class="std std-ref">Extensions</span></a> may also be defined by passing a comma separated list
of import paths as <cite>extensions</cite> value. The i18n extension is added
automatically.</p>
<div class="versionchanged">
<p><span class="versionmodified">Changed in version 2.7: </span>Until 2.7 template syntax errors were always ignored. This was done
since many people are dropping non template html files into the
templates folder and it would randomly fail. The assumption was that
testsuites will catch syntax errors in templates anyways. If you don’t
want that behavior you can add <code class="docutils literal notranslate"><span class="pre">silent=false</span></code> to the settings and
exceptions are propagated.</p>
</div>
</div>
<div class="section" id="pylons">
<h2>Pylons<a class="headerlink" href="#pylons" title="Permalink to this headline">¶</a></h2>
<p>With <a class="reference external" href="http://www.pylonshq.com/">Pylons</a> 0.9.7 onwards it’s incredible easy to integrate Jinja into a
Pylons powered application.</p>
<p>The template engine is configured in <cite>config/environment.py</cite>. The configuration
for Jinja2 looks something like that:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">jinja2</span> <span class="k">import</span> <span class="n">Environment</span><span class="p">,</span> <span class="n">PackageLoader</span>
<span class="n">config</span><span class="p">[</span><span class="s1">'pylons.app_globals'</span><span class="p">]</span><span class="o">.</span><span class="n">jinja_env</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">(</span>
<span class="n">loader</span><span class="o">=</span><span class="n">PackageLoader</span><span class="p">(</span><span class="s1">'yourapplication'</span><span class="p">,</span> <span class="s1">'templates'</span><span class="p">)</span>
<span class="p">)</span>
</pre></div>
</div>
<p>After that you can render Jinja templates by using the <cite>render_jinja</cite> function
from the <cite>pylons.templating</cite> module.</p>
<p>Additionally it’s a good idea to set the Pylons’ <cite>c</cite> object into strict mode.
Per default any attribute to not existing attributes on the <cite>c</cite> object return
an empty string and not an undefined object. To change this just use this
snippet and add it into your <cite>config/environment.py</cite>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">config</span><span class="p">[</span><span class="s1">'pylons.strict_c'</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
</pre></div>
</div>
</div>
<div class="section" id="textmate">
<h2>TextMate<a class="headerlink" href="#textmate" title="Permalink to this headline">¶</a></h2>
<p>There is a <a class="reference external" href="https://github.com/mitsuhiko/jinja2-tmbundle">bundle for TextMate</a> that supports syntax highlighting for Jinja1 and Jinja2 for text based
templates as well as HTML. It also contains a few often used snippets.</p>
</div>
<div class="section" id="vim">
<h2>Vim<a class="headerlink" href="#vim" title="Permalink to this headline">¶</a></h2>
<p>A syntax plugin for <a class="reference external" href="http://www.vim.org/">Vim</a> exists in the Vim-scripts directory as well as the
<cite>ext</cite> folder at the root of the Jinja2 project. <a class="reference external" href="http://www.vim.org/scripts/script.php?script_id=1856">The script</a> supports Jinja1 and
Jinja2. Once installed two file types are available <cite>jinja</cite> and <cite>htmljinja</cite>.
The first one for text based templates, the latter for HTML templates.</p>
<p>Copy the files into your <cite>syntax</cite> folder.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"><p class="logo"><a href="index.html">
<img class="logo" src="_static/jinja-small.png" alt="Logo"/>
</a></p>
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Integration</a><ul>
<li><a class="reference internal" href="#babel-integration">Babel Integration</a></li>
<li><a class="reference internal" href="#pylons">Pylons</a></li>
<li><a class="reference internal" href="#textmate">TextMate</a></li>
<li><a class="reference internal" href="#vim">Vim</a></li>
</ul>
</li>
</ul>
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="extensions.html" title="previous chapter">Extensions</a></li>
<li>Next: <a href="switching.html" title="next chapter">Switching from other Template Engines</a></li>
</ul></li>
</ul>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/integration.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
© Copyright 2008, Armin Ronacher.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
</div>
</body>
</html>