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 IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归