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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java初学者Swing递归   java将hashmap转换为JSON字符串   cURL和java字符串变量出错   java为什么不将其视为多重继承,而所有类都首先从对象类扩展,然后再扩展其他类   java如何在eclipse中添加插件依赖项   使用java从Ms word表中提取图片   java实现可比较的接口   验证生成的事务时发生java错误。木栓   java@OneToMany和不同的主键   java Jaxb2在相对路径上找不到xsd架构   java客户端C++服务器数据发送/接收问题   javajaxws-webservice。改变节点结构   java如何将带有特殊字符的字符串转换为另一个转义字符串   netbeans如何链接JGraph传感器和Java邮件?   java如何在单个tomcat中检查每个web应用程序的内存大小?   客户端图形QLJava类生成器