很简单,你马上就会流泪。
django-keyed-urls的Python项目详细描述
在数据库中需要特定语言的url时,这些情况下的应用程序 用于模板或重定向。
安装
使用pip安装django-keyed-urls:
pip install django-keyed-urls
将keyed_urls和modeltranslation添加到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'), )
用法
助手
另外还有两个助手。如果需要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块。