2015-04-12 77 views
2

我正在用django框架构建一个web应用程序。在我的一个模板中,我想要将超链接指向外部URLdjango blocktrans外部网址

在这个模板中,我需要两种语言,所以我决定使用django blocktrans标签。从the django documentation),我只能将内部网址作为网址。 CMIIW。

如何放置我的外部URL?

例如。这是英文版的template.html。我把http://external/docs/en/作为超链接

{% blocktrans %} 
Hello, how are you? <a href="http://external/docs/en/" target="new">Lorem ipsum</a>. The quick brown fox jumps over the lazy dog. 
{% endblocktrans %} 

而对于德国的语言,我需要把http://external/docs/de/作为超链接

{% blocktrans %} 
Hello, how are you? <a href="http://external/docs/de/" target="new">Lorem ipsum</a>. The quick brown fox jumps over the lazy dog. 
{% endblocktrans %} 

而在Django文档的例子是仅用于内部URL。

{% if LANGUAGE_CODE == 'en' %} 
    {% url 'views.doc.en' as urldoc %} 
{% else %} 
    {% url 'views.doc.de' as urldoc %} 
{% endif %} 
{% blocktrans %} 
Hello, how are you? <a href={{ urldoc }} target="new">Lorem ipsum</a>. The quick brown fox jumps over the lazy dog. 
{% endblocktrans %} 

回答

0

您可以直接使用与{{ LANGUAGE_CODE }}语言代码模板,并将其添加到URL。例如:

{% blocktrans %} 
Hello, how are you? <a href=http://external/docs/{{ LANGUAGE_CODE }}/ target="new">Lorem ipsum</a>. The quick brown fox jumps over the lazy dog. 
{% endblocktrans %} 

当用户的英语语言选择{{ LANGUAGE_CODE }}en。如果用户已经德语选择{{ LANGUAGE_CODE }}de

因此,该链接将是:

+0

但是,用这个片段,我该如何放置if/else语句?到目前为止,我的想法是为每个外部链接创建视图,并将if/else语句放在blocktrans标记之前。 – zakiakhmad

+0

有了这个片段,您不需要is/else语句,因为具有正确语言代码的网址是使用{{LANGUAGE_CODE}}动态构建的 – ferrangb

0

到目前为止,我的解决办法是在views.py创建功能,它将重定向到外部URL。

@login_required 
def doc_en(): 
    return HttpResponseRedirect('http://external/docs/en') 

@login_required 
def doc_de(): 
    return HttpResponseRedirect('http://external/docs/de')