Python Django:模板中的变量是个好主意吗?
我对Django和HTML很陌生。我的模板中包含以下内容:Python Django:模板中的变量是个好主意吗?,python,html,django,django-templates,Python,Html,Django,Django Templates,我对Django和HTML很陌生。我的模板中包含以下内容: {% if user.is_authenticated %} <a href='{% url 'vote' %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a> {% else %} <a href='{% url 'login' %}'
{% if user.is_authenticated %}
<a href='{% url 'vote' %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
{% else %}
<a href='{% url 'login' %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
{% endif %}
{%if user.u经过身份验证%}
{%else%}
{%endif%}
因此,只有URL不同,但id和图像是相同的。如何避免这种重复?我会这样做:
{% var link %} {# pseudo-code #}
{% if user.is_authenticated %}
link = 'vote'
{% else %}
link = 'login'
{% endif %}
<a href='{% url link %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
{%var link%}{{#伪代码#}
{%if user.u经过身份验证%}
链接=‘投票’
{%else%}
link='login'
{%endif%}
这是个好主意吗?我知道Django不支持局部变量,但是有一些站点包支持这一点。还是在视图中处理逻辑并将link
作为参数传递给模板更好
那么真正的Django方法是什么呢?是的,您将
链接作为参数传递给模板。
应用于模板的变量称为上下文
真正的django方法是尽可能地将逻辑与表示分离。这就是模板可以有if和for循环的原因,但肯定应该避免变量。是的,您可以将链接作为参数传递给模板。
应用于模板的变量称为上下文
真正的django方法是尽可能地将逻辑与表示分离。这就是为什么模板可以有if和for循环,但肯定应该避免变量。True-Django是处理视图逻辑或为此创建用户方法的一种方法。
您可以在views.py中
def index(request):
def can_vote():
if request.user.is_authenticated:
return 'vote'
return 'login'
user = request.user
user.vote = can_vote
...
然后在模板中,您可以
<a href='{% url user.vote %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
True Django处理视图逻辑或为此创建用户方法的方法。
您可以在views.py中
def index(request):
def can_vote():
if request.user.is_authenticated:
return 'vote'
return 'login'
user = request.user
user.vote = can_vote
...
然后在模板中,您可以
<a href='{% url user.vote %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
如果唯一不同的是链接,您当然可以将其全部放在一行:
<a href='{% if user.is_authenticated %}{% url 'vote' %}{% else %}{% url 'login' %}{% endif %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
在控制器中:
<a href='{{ link }}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
如果唯一不同的是链接,您当然可以将其全部放在一行:
<a href='{% if user.is_authenticated %}{% url 'vote' %}{% else %}{% url 'login' %}{% endif %}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>
在控制器中:
<a href='{{ link }}' id='story-vote-{{ story.id }}' class='vote'><img src='{{ STATIC_URL }}images/arrow.gif'></a>