我在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的模板?
答案 0 :(得分:3)
可以使用url
将as
标记分配给变量。
{% 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>