【问题标题】:Template syntax error. Could not parse the remainder (Django)模板语法错误。无法解析余数(Django)
【发布时间】:2019-07-24 08:09:17
【问题描述】:

有人能指出我正确的方向吗?以下是我一直在做的事情

    <p>{{article.snippet}}</p>
    <p>{{article.date}}</p>
    <p>{{article.retrieve_by_category("web")}}</p>

我在获取日期或 sn-p 时没有问题,但在尝试运行 article.retireve_by_category 时不断收到以下错误。

无法解析剩余部分:'("web")' from 'article.retrieve_by_category("web")'

下面是模型的代码:

class Article(models.Model):
    category = models.CharField(max_length=100)
    title = models.CharField(max_length=100)
    slug = models.SlugField()
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    #add in thumbnail

    def __str__(self):
        return self.title

    def snippet(self):
        return self.body[:500] + "..."

    def retrieve_by_category(self,category):
        """retrieves blogs based on their category"""
        if (str(self.category) == category):
            return self.category
        return ''

【问题讨论】:

  • 该函数似乎并没有做任何有用的事情。它当然不会像名字所暗示的那样做。您要做的就是检查类别名称,您可以直接在模板中进行。

标签: python django django-models


【解决方案1】:

你不能使用类似于模板标签的功能

<p>{{article.snippet}}</p>
<p>{{article.date}}</p>
<p>{{article.retrieve_by_category("web")}}</p>  # this is wrong

您可以改为custom template tags

【讨论】:

    【解决方案2】:

    您不能在模板内调用函数。最好在你的视图中处理,下面是一个简单的例子:

    def your_view(request):
    
       article = Article.objects.filter(category="web")
    
       return render(request, "/toyourtemplate", {'web':article})
    

    如果你想让类别动态用户输入,你可以使用django表单

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 2016-04-03
      • 2015-05-05
      • 2019-09-04
      • 2021-12-01
      • 2013-10-04
      • 2023-02-08
      • 1970-01-01
      相关资源
      最近更新 更多