过滤器写在模板中,属于django模板语言。这样使用:
{{value|filter}}
value是变量,filter是过滤器。举例:
{{list_nums|length}}
返回list_nums的长度。过滤器也可以叠加:
{{value|filter1|filter2|filter3}}
这可以应用到之前写的博客项目中。之前写的edit_page.html比较复杂,因为if else 语句而有重复代码。如果把全部的article_id=0的else语句删掉,则django模板遇到不存在的变量不会报错,只会给它返回一个空字符串''。这样点开了新文章的超链接文本框里也什么都不显示。但是当输入完点下提交后会传递到响应函数edit_action一个空字符串而不是'0',这就会报错了。于是可以写value="{{ article.id|default:'0'"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Edit Page</title>
</head>
<body>
<form action="{% url 'blog:edit_action' %}" method="post">
{% csrf_token %}
<input type="hidden" name="article_id" value="{{ article.id|default:'0' }}"/>
<label>文章标题
<input type="text" name="title" value="{{ article.title }}"/>
</label>
<br/>
<label>文章内容
<input type="content" name="content" value="{{ article.content }}"/>
</label>
<br/>
<input type="submit" value="提交">
</form>
</body>
</html>