【发布时间】:2020-04-23 07:15:21
【问题描述】:
我有一个自定义模板标签如下:
@register.simple_tag
def call_method(obj, method_name, *args):
"""
Usage
in shell
obj.votes.exists(user_id)
in template
{% call_method obj.votes 'exists' user.id %}
"""
method = getattr(obj, method_name)
return method(*args)
然后我可以在模板(基于类的详细视图)中调用它,如下所示。
{% call_method object.votes 'exists' user.id %}
我的问题是如何在 If 语句中使用这个模板标签? 比如为什么我不能用like:
{% if call_method object.votes 'exists' user.id %}
我正在使用 django-vote [https://github.com/shanbay/django-vote][1]
我的目标是检查用户是否已经投票,以便我可以更改投票按钮的类别。 否则,我已经可以查看它了。而且效果很好。
如果不能在 If 语句中使用带参数的简单标签,您能否建议一种方法来达到我的目标?
编辑: 我正在添加视图。
def vote(request, slug):
term = Term.objects.get(slug=slug)
if term.votes.exists(user_id=request.user.id):
term.votes.down(user_id=request.user.id)
else:
term.votes.up(user_id=request.user.id)
return HttpResponseRedirect(term.get_absolute_url())
和型号:
class Term(VoteModel, models.Model):
【问题讨论】:
标签: django templates templatetags