很简单,你马上就会流泪。

django-keyed-urls的Python项目详细描述


https://travis-ci.org/matthiask/django-keyed-urls.png?branch=master

在数据库中需要特定语言的url时,这些情况下的应用程序 用于模板或重定向。

安装

使用pip安装django-keyed-urls

pip install django-keyed-urls

keyed_urlsmodeltranslation添加到INSTALLED_APPS

keyed_urls指定南方迁移的自定义位置-您真的 希望在添加或删除语言时使用south处理架构更改 来自LANGUAGES

SOUTH_MIGRATION_MODULES = {
    'keyed_urls': 'yourapp.migrate.keyed_urls',
}

创建并运行数据库迁移:

python manage.py schemamigration keyed_urls --initial
python manage.py migrate keyed_urls

如果要使用转发url,请在urlconf文件中添加一个条目。它 建议使用i18n_patterns,因为这意味着 自动正确处理特定语言的重定向URL:

from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns

urlpatterns += i18n_patterns(
    '',
    url(r'', include('keyed_urls.urls'),
)

用法

模板标签

用法很简单:

{% load keyed_urls %}

{% keyed_url 'some_key' as url %}

<a href="{{ url }}">bla</a>

<a href="{% keyed_url 'some_other_key' %}">bla</a>

或:

{% load keyed_urls %}

{% keyed_url 'some_key' language='en' as url %}

<a href="{{ url }}">bla</a>

如果一个密钥不存在,并且标记用作赋值标记,则变量 设置为None。否则,将引发KeyDoesNotExist异常 也会中止模板呈现。行为等同于 在这方面,django自己的{% url %}template标记。

助手

另外还有两个助手。如果需要python代码中的url, 使用以下代码段:

from keyed_urls import get_url

some_url = get_url('some_key')
some_other_url = get_url('some_key', language='en')

使用get_url与获取KeyedURL模型相比的优势 从数据库访问其url属性时,get_url是 缓存所有结果。因为模板也在内部使用get_url。 上面描述的标记意味着您不必担心性能 就像直接使用模型一样。get_url引发一个KeyDoesNotExist 找不到特定URL时出现异常。这可以通过 fail_silently=True

以下代码片段可用于获取转发URL:

from keyed_urls import get_forwarding_url

url = get_forwarding_url('some_key')
url = get_forwarding_url('some_key', language='de')

get_forwarding_url不过是django自己的一个薄薄的包装。 reverse方法。如果 KEY无效,但不检查是否存在给定的密钥。 数据库。访问链接时,用户将得到404响应。为了 get_forwarding_url要工作,必须包含keyed_urls.urls 在上面描述的urlconf中的某个地方,最好是在 i18n_patterns块。

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

推荐PyPI第三方库


热门话题
有没有一种方法可以将不同的java web应用程序组合到一个web应用程序(war)中而不相互影响?   java一次屏蔽两位   java如何在多个类上初始化元素?   java在后台服务中处理通知或使用GCM(或其他推送通知服务)   java从const方法调用JNI函数   javascript如何使用函数/方法返回?   Java优化:声明类变量与使用临时变量   java字符算术基数8 vs基数10   Java流收集要存储的对象列表   swing我正在用Java中的keyListener制作一个精灵移动器   在Gradle构建脚本中使用Scala(或java)方法   java Android Mediaplayer下一步按钮不起作用   Java Sound API在播放音频文件后将其锁定   java将变量从外部类传递到内部类的最佳方法   使用play framework的博客web应用程序出现java逻辑错误   java我们可以在Spring批处理中处理大型zip文件吗?   java如何检查JTable的选定行的特定列中的值是否已经在JList中?