Django模板加载器,如果激活的语言是从右到左的语言(如阿拉伯语或希伯来语),则该加载器将查找模板文件的从右到左的替代版本。
django-right-to-left的Python项目详细描述
摘要
Django模板加载器,如果激活的语言是从右到左的语言(如阿拉伯语或希伯来语),则该加载器将查找模板文件的从右到左的替代版本。
这提供了一种简单明了的方法来定制模板中的标记,而无需在模板中放置条件逻辑。
最常见的用例是django网站,它同时支持从左到右和从右到左的语言,如英语和阿拉伯语。
示例
假设您有以下django模板:
# homepage.html {% extends "layout.html" %} {% block content %} <div id="main_content">...</div> <div id="side_promo">...</div> {% endblock %}
要在激活的语言是阿拉伯语时交换内容,必须在div标记周围包装一个if语句。对于小模板来说,这可能是一个可行的解决方案,但是对于大多数模板来说,这将使模板很难阅读,而且很混乱。
使用django从右到左的模板加载器,可以创建一个名称相同但文件名后附加“_rtl”的替代模板,从而使这个过程更加清晰。在本例中,将选择一个名为“homepage_rtl.html”的文件作为替代。
现在,当一个模板被呈现时,不管它是由Django视图渲染还是通过使用“扩展”块来扩展另一个模板或者使用“包含”块来包含,Django右向左模板加载程序将查看是否存在另一个模板,该模板与“Y-RTL”相伴。如果它不存在,它将加载模板的标准版本。
安装
您可以使用pip从右到左安装django:
$ pip install django-right-to-left
或简易安装:
$ easy_install django-right-to-left
说明
django从右到左的工作方式与djangocached template loader完全相同。 django从右到左的模板加载程序是一个基于类的加载程序,您可以使用它应该包装的其他加载程序列表对其进行配置。
只需使用从右到左的django加载程序包装设置文件中定义的模板加载程序。
例如,如果您当前正在使用文件系统加载程序和应用程序目录加载程序, 将TEMPLATE_LOADERS设置更改为:
TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )
对此:
TEMPLATE_LOADERS = ( ('rtl.loaders.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )), )
就这些了。您现在要做的就是创建替代模板,确保将字符串“_rtl”附加到文件名中。所以“homepage.html”的另一个模板是“homepage_rtl.html”。
运行测试
Django从右到左有一个小而广泛的测试套件。您可以通过运行 以下命令,假设您 已安装virtualenvwrapper:
$ git clone git@github.com:abbas123456/django-right-to-left.git $ cd django-right-to-left $ mkvirtualenv django-right-to-left $ pip install -r requirements.txt $ ./runtests.py