如何将{%url''%}赋予变量?

时间:2016-07-19 03:14:02

标签: django django-templates

我在django模板中有这个要求:

{% if user.is_admin %}
<a href='{% url 'url_to_admin' %}'>admin url</a>
{% else %}
<a href='{% url 'url_to_other %}'>other url </a>
{% endif %}

现在,我想让它更简单,我想让url变量为'xx',如下所示:

if user.is_admin:
    myurl = {% url 'url_to_admin' %}
else:
    myurl = {% url 'url_to_other' %}

<a href={{myurl}} > url </a>

但我不知道怎么写django的模板?

4 个答案:

答案 0 :(得分:3)

可以使用urlas标记分配给变量。

{% url 'my_url' as foobar %}
{{ foobar }}

但是,在您正在使用它的当前地方,这没有任何意义。只需在if / else语句

中分配锚标记即可
{% if user.is_admin %}
    <a href="{% url 'url_to_admin' %}">admin</a>
{% else %}
    <a href="{% url 'url_to_other' %}">other</a>
{% endif %}

答案 1 :(得分:0)

不是答案,但你可以试试这个:

-ShowWindow

答案 2 :(得分:0)

为什么在呈现模板之前不在视图中处理它,尝试类似于view.py中的内容 if User.is_admin: url = 'url_to_admin' else: url = 'url_to_other' render(request, "your_template.html", {'url' : url})

然后你可以继续在你的模板中调用你的网址 <a href= "{{ url }}>url</a>"

答案 3 :(得分:0)

views.py

from django.core.urlresolvers import reverse
def my_view(request):
    if request.user.is_admin:
        my_url = reverse('my_admin_view')
    else:
        my_url = reverse('my_other_view')
    return render(request, 'my_template.html', {'my_url': my_url })

使用django.core.urlresolvers.reverse

my_template.html

<a href="{{ my_url }}">This is a link</a>