python - Django 的方法是什么?

标签 python django

class Article(models.Model):
    def user_may_see_full_version(self, user):
        # do something very sophisticated with the user
        return [True/False whatever]

现在我想创建一个这样的模板:

{% for article in articles %}
    {% if article.user_may_see_full_version request.user %}{{ article }}{% else %}{{article.title }}{% endif %}
{% endfor %}

但这不起作用,因为我无法将参数传递给方法......

有什么好的方法可以解决这个问题吗?

最佳答案

无法直接从模板将参数传递给方法。模板过滤器是最好的方法:

{% if article|user_may_see_full_version:user %}{{ article }}{% else %}{{article.title }}{% endif %}

过滤器的实现如下:

@register.filter()
def user_may_see_full_version(article, user):
    return article.user_may_see_full_version(user)

关于python - Django 的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3543603/

相关文章:

python - Django 在上传到 Amazon S3 存储桶之前更改图像名称

python - 将 Recaptcha 表单添加到我的 Django 登录页面

Python:管理日志处理程序的最佳实践

python - 有没有一个好的工具来聚合站点的 django 错误消息?

python - 如何在 Django 的 GenericStackedInline 管理中访问请求对象

python - 如何在 Django 表单选择字段中设置默认值?

django - postgreSQL.app : create database

python - 网格搜索CV : print some expression each time a function completes a loop

python - 将 numpy 数组作为文件存储和加载

python - pyspark 状态报告之间的时间