Django模板URL标记中的条件反向名称
是否可以将包含反向名称的参数传递给Django模板URL标记 例如:Django模板URL标记中的条件反向名称,django,django-templates,url-pattern,Django,Django Templates,Url Pattern,是否可以将包含反向名称的参数传递给Django模板URL标记 例如: 注意:在本例中条件URL不是反向名称。 URL.py: urlpatterns = patterns('views', url(r'^iframeViewURL/$', 'iframeView', name='iframeView'), url(r'^url_a/', 'view_a', name='view_a'), url(r'^url_b/', 'view_b', name='view_b'),
注意:在本例中
条件URL不是反向名称。
URL.py:
urlpatterns = patterns('views',
url(r'^iframeViewURL/$', 'iframeView', name='iframeView'),
url(r'^url_a/', 'view_a', name='view_a'),
url(r'^url_b/', 'view_b', name='view_b'),
)
view.py:
def iframeView(**kwargs):
kw = kwargs
if kw['condition']:
conditional_url = 'view_a' # name of the URL pattern
else:
conditional_url = 'view_b' # name of the URL pattern
return render_to_response('iframe.html', {'conditional_URL': conditional_url},
context_instance=RequestContext(request, {}))
def view_a(*args):
pass
def view_b(*args):
pass
iframe.html:
<iframe src="{% url conditional_URL *args %}">
</iframe>
我尝试了这个方法,但它不起作用,因为条件URL不是任何URL模式的名称。与其将URL模式的名称传递给模板,不如更容易解析并将实际URL传递给模板 比如:
def iframeView(**kwargs):
kw = kwargs
if kw['condition']:
conditional_url = 'name_a' # name of the URL pattern
else:
conditional_url = 'name_b' # name of the URL pattern
return render_to_response('iframe.html',
{'conditional_URL': reverse(conditional_url)},
context_instance=RequestContext(request, {}))
然后在模板中
<iframe src="{{conditional_URL}}"> </iframe>
与其将url模式的名称传递给模板,不如更容易解析并将实际url传递给模板 比如:
def iframeView(**kwargs):
kw = kwargs
if kw['condition']:
conditional_url = 'name_a' # name of the URL pattern
else:
conditional_url = 'name_b' # name of the URL pattern
return render_to_response('iframe.html',
{'conditional_URL': reverse(conditional_url)},
context_instance=RequestContext(request, {}))
然后在模板中
<iframe src="{{conditional_URL}}"> </iframe>
从Django 1.3开始,如果将
{%loadURL from future%}
添加到templatetag,则有可能:
{% load url from future %}
<iframe src="{% url conditional_URL arg1 arg2 %}">
</iframe>
{%从未来加载url%}
在Django 1.5中,不再需要添加{%loadURL from future%}
有关更多信息,请参阅中的“转发兼容性”如果将
{%load url from future%}
添加到templatetag中,则自Django 1.3以来,这是可能的:
{% load url from future %}
<iframe src="{% url conditional_URL arg1 arg2 %}">
</iframe>
{%从未来加载url%}
在Django 1.5中,不再需要添加{%loadURL from future%}
有关更多信息,请参见中的“转发兼容性”,Ok看起来很简单,但是上面示例{%url%}中的*args如何?return语句中的*args太多了,
)
,这是一个语法错误。Ok看起来很简单,但是{%url%}中的*args如何上面的示例?return语句中的)
太多,这是一个语法错误。