Django框架学习日寄(二)——模板及模板语法
Django框架学习日寄(二)——模板及模板语法
templates 页面模板
-
返回html文件的语法
# 1. 优先在根目录的templates中寻找(需要提前配置) # 2. 根据app注册顺序,在每个app的templates目录中寻找 return render(request, <html文件>)
-
默认会根据app注册顺序在app目录下的templates目录寻找.
-
若根目录下存在templates文件夹, 默认优先app.
-
寻找优先级可在settings.py内配置"DIRS"项.
-
静态文件
一般将图片
, css
, js
, 插件
都当作静态文件
处理
模板语法
模板语法为Django特占语法, 由render内部进行渲染.
{% <struct> %}
本质: 在HTML中写一些占位符, 由数据对占位符进行替换处理.
-
传值
# app/views.py # 创建url处理函数 # 返回render附带参数(字典类型) def index(req): user_info = { "is_admin": False, "name": "Lovechan", "age": 18, "gender": "male", } books = ["《母猪的产后护理》", "《三体》", "《算法导论》"] return render(req, "index.html", {"user": user_info, "content": books})
-
html文件内引用值:
-
在要调用参数的位置插入 {% valueName %}, 其中valuename为传入的字典中的key.
-
列表元素的索引罗列采用{% valueName.<index> %}, 如{% content.1 %}.
-
字典取值采用{% valueName.<key> %}, 如{% user.name %}.
<!-- index.html --> <!DOCTYPE html> ... <body> <h1>用户信息</h1> <div>{{ user }}</div> <div> {% for k,v in user.items %} <li>{{ k }} : {{ v }}</li> {% endfor %} </div> <hr/> <h1>目录</h1> <div> {% for item in content %} <li>{{ item }}</li> {% endfor %} </div> </body>
-
-
循环
# 字典取键:.keys,取值:.values,取键值对:.items. {% for _ in __ %} <some opeations> {% endfor %}
-
条件判断
{% if <表达式> %} <some opeations> {% elif <表达式> %} <some opeations> {% else %} <some opeations> {% endif %}
-
模板文件导入
<!login.html> <!导入文件 语法:{% load <struct> %}> {% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"/> <title>EasyBuy后台管理系统</title> <!语法:{% <struct> <filepath> %}> <link rel="stylesheet" href={% static 'css/login.css' %}> </head>
(项目结构)