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'),

是否可以将包含反向名称的参数传递给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'),
)
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语句中的
太多,这是一个语法错误。