3

如何在 django 模板的url 模板标签中嵌入标签?

Django 1.0,Python 2.5.2

在views.py

def home_page_view(request):
    NUP={"HOMEPAGE": "named-url-pattern-string-for-my-home-page-view"}    
    variables = RequestContext(request, {'NUP':NUP})
    return render_to_response('home_page.html', variables)

在 home_page.html 中,如下

NUP.HOMEPAGE = {{ NUP.HOMEPAGE }}

显示为

NUP.HOMEPAGE = named-url-pattern-string-for-my-home-page-view

并且以下名为 pattern 的 url 有效(如预期的那样),

url template tag for NUP.HOMEPAGE = {% url named-url-pattern-string-for-my-home-page-view %}

并显示为

url template tag for NUP.HOMEPAGE = /myhomepage/

但是当{{ NUP.HOMEPAGE }}嵌入{% url ... %}如下时

url template tag for NUP.HOMEPAGE = {% url {{ NUP.HOMEPAGE }} %}

这会导致模板语法错误

TemplateSyntaxError at /myhomepage/
Could not parse the remainder: '}}' from '}}'
Request Method: GET
Request URL:    http://localhost:8000/myhomepage/
Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse the remainder: '}}' from '}}'
Exception Location: C:\Python25\Lib\site-packages\django\template\__init__.py in __init__, line 529
Python Executable:  C:\Python25\python.exe
Python Version: 2.5.2

我期望在运行时{% url {{ NUP.HOMEPAGE }} %}解析{% url named-url-pattern-string-for-my-home-page-view %} 并显示为/myhomepage/.

django 不支持嵌入式标签吗?

是否可以编写带有嵌入式标签支持的自定义 url 模板标签来完成这项工作?

{% url {{ NUP.HOMEPAGE }} %}

4

3 回答 3

2

也许您可以尝试将最终 URL 传递给模板?

像这样的东西:

from django.core.urlresolvers import reverse

def home_page_view(request):
    NUP={"HOMEPAGE": reverse('named-url-pattern-string-for-my-home-page-view')}    
    variables = RequestContext(request, {'NUP':NUP})
    return render_to_response('home_page.html', variables)

然后在模板中,NUP.HOMEPAGE应该是 url 本身。

于 2008-10-31T21:00:30.633 回答
0

这似乎太动态了。你应该做

{% url named-url-pattern-string-for-my-home-page-view %}

就这样吧。动态填写 URL 标记的名称——坦率地说——有点奇怪。

如果您想使用大量不同的 URL 标记中的任何一个,则必须执行以下操作

{% if tagoption1 %}<a href="{% url named-url-1 %}">Text</a>{% endif %}

这似乎是冗长的,因为再次,您试图实现的动态目标似乎有点奇怪。

如果您有类似“家庭”或“集群”页面的内容,那么单独的模板目录可能是一种更好地管理它的方法。每个页面集群都可以从基本模板继承并覆盖诸如此导航功能之类的小东西,以保持集群中的所有页面看起来相似但对于“本地主页”具有一个导航差异。

于 2008-10-31T20:59:47.170 回答
0

向 Django 发布了一个错误。他们应该能够解决这个问题。

http://code.djangoproject.com/ticket/10823

于 2009-04-15T13:28:15.153 回答