跳转到主要内容

简单到你可能立刻感动落泪。

项目描述

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

适用于需要将特定语言的URL存储在数据库中,以便在模板中使用或作为重定向的情况的应用程序。

安装

使用pip安装django-keyed-urls

pip install django-keyed-urls

将keyed_urls和modeltranslation添加到INSTALLED_APPS。

为keyed_urls指定自定义的South迁移位置 - 当添加或删除LANGUAGES中的语言时,您确实希望使用South来处理模式更改

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 %} 模板标签的行为相同。

辅助工具

另外还有两个辅助工具可用。如果您需要在Python代码中使用URL,请使用以下代码片段

from keyed_urls import get_url

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

与从数据库中获取 KeyedURL 模型并访问其 url 属性相比,使用 get_url 的优点是 get_url 会缓存所有结果。由于 get_url 也被上述模板标签内部使用,这意味着您不必像直接使用模型那样过多地担心性能。如果找不到特定的URL,则 get_url 会引发一个 KeyDoesNotExist 异常。可以通过传递 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 方法的薄层包装。如果键无效,此方法会引发一个 NoReverseMatch 异常,但不会检查数据库中是否存在提供的键。当用户访问链接时,他们会收到一个404响应。为了使 get_forwarding_url 正常工作,您必须将 keyed_urls.urls 包含在您的URLconf中,如上所述,最好放在一个 i18n_patterns 块中。

项目详情


下载文件

下载适用于您平台的应用文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

django-keyed-urls-0.4.1.tar.gz (7.1 kB 查看哈希值)

上传时间

构建分发

django_keyed_urls-0.4.1-py2.py3-none-any.whl (10.6 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面