我正在使用i18n_patterns
在Django应用程序中创建语言前缀。
我的网址如下所示:
/de/contact/
/fr/contact/
/it/contact/
在我的基本模板中,我循环了所有可用的语言来显示语言切换链接。
{% get_available_languages as languages %}
<nav id="language_chooser">
<ul>
{% for lang_code, lang_name in languages %}
{% language lang_code %}
<li><a href="{% url 'home' %}" alt="{{ lang_name }}" title="{{ lang_name }}">{{ lang_code }}</a></li
{% endlanguage %}
{% endfor %}
</ul>
</nav>
在本例中,我将反转“主页”URL。有没有办法获取当前页面的翻译URL?
如果我在德语版的“联系人”页面上,我希望“fr”链接指向法语版本的“联系人”页面,而不是“主页”页面。
我觉得值得一提的是,有一个内置函数叫做< code>translate_url。
from django.urls import translate_url
translate_url(url, lang_code)
我没有使用语言前缀,而是使用翻译的网址。但是,此模板标记还应该可以帮助您:
# This Python file uses the following encoding: utf-8
from django import template
from django.core.urlresolvers import reverse # from django.urls for Django >= 2.0
from django.core.urlresolvers import resolve # from django.urls for Django >= 2.0
from django.utils import translation
register = template.Library()
class TranslatedURL(template.Node):
def __init__(self, language):
self.language = language
def render(self, context):
view = resolve(context['request'].path)
request_language = translation.get_language()
translation.activate(self.language)
url = reverse(view.url_name, args=view.args, kwargs=view.kwargs)
translation.activate(request_language)
return url
@register.tag(name='translate_url')
def do_translate_url(parser, token):
language = token.split_contents()[1]
return TranslatedURL(language)
它以期望的语言返回当前的url。像这样使用:< code>{% translate_url de %}
欢迎提出改进意见和建议。
问题内容: 我想知道如何在模板中获取当前URL。 说我目前的网址是: 如何将其返回到模板? 问题答案: Django 1.9及更高版本: 旧:
X2.2.0新增 sp_check_lang() 功能: 判断当前的语言包,并返回语言包名 参数: 无 返回: 类型string 包名,如:zh-cn 使用: $lang=sp_check_lang();
接下来,我们会详细描述 Django 内置模板语言的语法 (DTL),和 Mako、Jinja2 一样,需要掌握其注释、变量、过滤器、标签、控制语句等等的写法,并用实际的案例进行说明。 1. DTL 基础用法 1.1 变量 DTL 中变量的写法为 {{ variable }}, 这和 Jinja2 非常类似。模版引擎碰到模板变量时,会从上下文 context 中获取这个变量的值,然后用该值替换掉它
cmf_get_current_theme() 功能 获取当前前台模板 参数 无 返回 string
问题内容: 有没有办法在Django模板中获取当前页面的URL及其所有参数? 例如,一个模板标签将显示完整的网址,例如 问题答案: 编写自定义上下文处理器。例如 在设置变量中添加该函数的路径,然后在模板中使用它,如下所示: 如果要在每个请求中都有完整的对象,则可以使用内置的上下文处理器,然后在模板中使用。
cmf_get_current_admin_theme() 功能 获取当前后台模板 参数 无 返回 string