前言
html5是一个静态的语言,里面没法传一些动态参数,也就是一个写死的html页面。如果想实现在一个固定的html样式,传入不同的参数,这就可以用django的模板传参来解决。
Django 内置的模板语言 Django Template Language,Jinjia2 是python里面最流行的模板语言,模板语言它不属于python语言,也不属于HTML语言,它是一门独立的语言。
先在TestProject目录下新建templates,层级目录如下:
新建一个personinfo.html文件,hello/templates/personinfo.html文件内容如下,模板变量用{{变量名称}}
来表示
字符串直接取值 List对象,通过下标 .0 字典对象,通过下标 .key 取出对应value值
在settings.py脚本里面添加模板的路径,修改TEMPLATES 中的 DIRS 为[os.path.join(BASE_DIR,'templates')]
BASE_DIR的值前面已经定义为当前脚本的路径:os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
视图与url
如果取值对象是应该类的实例对象
接着在朋友pycharm中输入:python manage.py runserver 0.0.0.0:8000
打开浏览器,输入ip:8000/personinfo/
如果取值对象是应该类的实例对象
Django 模板标签
{% for %} 允许我们在一个序列上迭代,与python中的for循环类似模板系统会渲染
{% for %},{% endfor %}之间的所有内容。
{% if %} 允许我们在一个序列上迭代,与python中的for循环类似模板系统会渲染
{% if %},{% endif %}之间的所有内容。
empty标签
for标签带有一个可以选择的{ % empty % }从句,一遍给出的组没有找到或者空值时,给个默认值。
内部模板变量forloop
在{% for %} 循环内部,可以访问一个名为 forloop 的模板变量。这个模板变量有若干属性,通过他可以获知循环进程的一些信息。
forloop.counter:表示循环的次数,属性的值从1开始,因此第一次循环时,forloop.counter等于1。
forloop.counter0:与forloop.counter类似,不过是从零开始,第一次循环是,其值为0。
forloop.revcounter:forloop.revcounter值是一个整数,表示循环中剩余的元素数量。第一次循环时,是序列中要遍历的元素总数,最后一次值为1。
forloop.frist:是一个布尔值,第一次循环时值为true,特殊处理第一个元素比较方便。
forloop.last:是一个布尔值,最后一次循环时值为true,疆场用在一组连接之间放置管道符号。
forloop.parentloop:在嵌套的循环中,引用腹肌循环的forloop对象。
以forloop.last 为例,在每一个连接后放置管符号,最后一个不用放。
if 语句
常用集中场景:
{% if name == 'python' %}
这是{{ name }}的页面
{% endif %}
{% if name == 'python' %}
这是{{ name }}的页面
{% elif name == 'django' %}
这是django的页面 {% else %}
这是错误的页面
{% endif %}