模板
1. 模板介绍
web开发:给用户提供一个可视化页面,包含两部分,django 模板系统能够完成这两部分的内容
- 静态页面:css,html,js,img
- 动态数据:需要使用模板语法将数据渲染
2. 模板标签系统
在web开过过程中,我们要实现用户需求,给用户提供一个完成的页面,这个完整的页面包括 静态页面 + 渲染的数据。Django的模板系统封装了完成这个两个功能的模块
- 在项目的工程目录下创建一个templates目录
- 在settings.py 中配置模板路径
3. 调用模板的三种方法
render 和 render_to_response 的参数问题
render:第一个参数是request,第二个参数是返回的 html 页面的名字,第三个参数是要返回页面的数据或者变量
render_to_response:第一个参数是返回的 html 页面的文件名,第二个参数是要返回页面的数据或者变量
- 方法一:
返回静态页面
from django.shortcuts import render
def myindex(request):
return render(request,"index.html")
返回静态页面+ 数据
from django.shortcuts import render,render_to_response
def myindex(request):
return render(request,"index.html",{"name":"laowang"})
- 方法二:
返回静态页面
from django.shortcuts import render,render_to_response
def myindex2(request):
return render_to_response("index.html")
返回静态页面 + 数据
def myindex2(request):
return render_to_response("index.html",{"name":"index2"})
- 方法三
from django.template.loader import get_template
def myindex3(request):
name = "lisi"
template = get_template("index.html")
result = template.render({"name":name})
return HttpResponse(result)
4. 模板语法
views页面
- 这里的 locals() 可以将这个方法的所有变量传入到页面当中
def demo(request):
name = '张三'
age = 12
hobby = ['唱','跳']
coures = {key1:33,key2:44}
return render(request,'demo.html',locals())
demo.html页面
- {{ 变量名 }}在页面当中使用视图中传过来的数据
- 区别于 python 当中的语法,这里取列表和字典中的值的用的点 “ . ”
<body>
姓名:{{ name }}
年龄:{{ age }}
爱好:{{ hobby.0 }}
成绩:{{ course.key1 }}
</body>
4.1 if 和 for 的用法
demo.html 文件
<body>
// 这里使用的还是上面的视图返回的字典和列表
// for循环的用法
{% for x in hobby reversed %}
{{ x }}
{% endfor %}
// if 的用法
{% if age > 15 and age < 30 %}
<p>我是青年</p>
{% elif age >= 30 %}
<p>我是老年</p>
{% endif %}
// forloop 用来计数的
{% for x in hobby reversed %}
{% if forloop.first %}
{{forloop.counter}}.{{ x }}
{% elif forloop.last %}
{{forloop.counter}}.{{ x }}
{% else %}
{{forloop.counter}}.{{ x }}
{% endif %}
{% endfor %}
</body>
4.2 过滤器的使用
-
作用:
多后台传过来的数据进行二次处理
-
语法结构:
{{ 变量 | 过滤器的名字:参数 }}
-
系统提供的过滤器比较单一,可以自定义过滤器,以求实现个性化的功能
{{ age | add:2 }} # 给变量加 2
{{ name | capfirst }} # 首字母大写
{{ name | lower }} # 全部小写
{{ name | upper }} # 全部大写
{{ name | default:"xxxx" }} # 给变量初始值
{{ name | cut:'l' }} # 移除指定字符
{{ now_time | date:'Y-m-d H:i:s' }} # 时间格式化输出
-
safe django
会将传入后台的js 或者 html 代码,认为是不安全的,然后进行转义,被safe 修饰的内容执行原有的意思
- 执行下图的代码,会出现小窗口弹窗,不用 safe 过滤的话输出的结果就是一个字符串
- 执行下图的代码,会出现小窗口弹窗,不用 safe 过滤的话输出的结果就是一个字符串
静态资源的加载
静态文件
通常是指 css,js,image等一些不常被直接访问的文件,但是在加载页面的时候会被加载,这些内容一般是固定的
1. 静态文件的配置
- 在项目的工程目录下,创建static 目录,用来放置静态文件
- 在settings 中进行配置
# 静态文件的配置
STATIC_URL = '/staic/' # 静态文件的代理路由
STATICFILES_DIRS = (
os.path.join(BASE_DIR,"static"), # 静态文件的路径拼接
)
- 前端使用静态文件,已使用图片为例
-
第一种
-
第二种
-