学习资料:Django 模板 | 菜鸟教程
场景1:
照着网上学习django if语句,执行的时候报错,报django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '>=90' from 'num>=90'
我写的代码如下:
{%if num>=90 and num<=100 %}
优秀
{%elif num>60 and num<=90%}
合格
{%else%}
不及格
{%endif%}
表面上看着合情合理,并没有什么明显错误,但还是报错。
解决方案:
原因是,条件判断的格式有问题,变量num、判断符、条件这三者之间一定要用空格隔开,num>=90,要写成num >= 90。这样才是正确的格式。
{%if num >= 90 and num <= 100 %}
优秀
{%elif num > 60 and num <= 90%}
合格
{%else%}
不及格
{%endif%}
场景2:
学习子模块继承父模板,执行的时候报错,django.template.exceptions.TemplateSyntaxError: <ExtendsNode: extends "base.html"> must be the first tag in the template.
父模板如下<base.html>:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>Hello World!</h1>
<p>菜鸟教程 Django 测试。</p>
{% block mainbody %}
<p>original</p>
{% endblock %}
</body>
</html>
子模板如下<runoob.html>,因为在学习继承之前,还学习了其他东西,代码都写在runoob.html里,学习到继承时,代码也是紧跟其后,写在后面,前面学习所写的例子都没有删。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>菜鸟教程</title>
</head>
<body>
{% load static %}<img src="{% static 'images/123.webp' %}" alt="runoob-logo">
<h1>{{hello}}</h1>
<p>{{name}}</p>
<p>{{name.0}}</p>
<p>{{name.1}}</p>
<p>{{name.2}}</p>
<p>{{HELLO_lower|lower}}</p>
<p>{{hello_first_upper|first|upper}}</p>
<p>{{views_str|safe}}</p>
{% extends "base.html" %}
{% block mainbody %}
<p>继承了 base.html 文件</p>
{% endblock %}
解决方案:
报错的原因正是这个子模板runoob.html,在用子模板时,{% extends "base.html" %}这行代码,必须写在文章第一行或者<body>下第一行,不能写在中间,即使前面都是注释也不行。所以将runoob.html更改为: (把前面所写的例子都删了)
{% extends "base.html" %}
{% block mainbody %}
<p>继承了 base.html 文件</p>
{% endblock %}
或者更改为:(不想删除自己之前所写的例子){% block mainbody %} 把自己所写的例子加在中间{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>菜鸟教程</title>
</head>
<body>
{% extends "base.html" %}
{% block mainbody %}
{% load static %}<img src="{% static 'images/123.webp' %}" alt="runoob-logo">
<h1>{{hello}}</h1>
<p>{{name}}</p>
<p>{{name.0}}</p>
<p>{{name.1}}</p>
<p>{{name.2}}</p>
<p>{{HELLO_lower|lower}}</p>
<p>{{hello_first_upper|first|upper}}</p>
<p>{{views_str|safe}}</p>
<p>继承了 base.html 文件</p>
{% endblock %}