Django知识点:模板和静态资源文件

模板

1. 模板介绍

web开发:给用户提供一个可视化页面,包含两部分,django 模板系统能够完成这两部分的内容

  • 静态页面:css,html,js,img
  • 动态数据:需要使用模板语法将数据渲染

2. 模板标签系统

在web开过过程中,我们要实现用户需求,给用户提供一个完成的页面,这个完整的页面包括 静态页面 + 渲染的数据。Django的模板系统封装了完成这个两个功能的模块

  1. 在项目的工程目录下创建一个templates目录
    在这里插入图片描述
  2. 在settings.py 中配置模板路径
    在这里插入图片描述

3. 调用模板的三种方法

render 和 render_to_response 的参数问题
render:第一个参数是request,第二个参数是返回的 html 页面的名字,第三个参数是要返回页面的数据或者变量
render_to_response:第一个参数是返回的 html 页面的文件名,第二个参数是要返回页面的数据或者变量

  1. 方法一:
返回静态页面
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"})

  1. 方法二:
返回静态页面
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"})
  1. 方法三
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 过滤的话输出的结果就是一个字符串
      在这里插入图片描述

静态资源的加载

静态文件
通常是指 css,js,image等一些不常被直接访问的文件,但是在加载页面的时候会被加载,这些内容一般是固定的

1. 静态文件的配置

  • 在项目的工程目录下,创建static 目录,用来放置静态文件
  • 在settings 中进行配置
# 静态文件的配置
STATIC_URL = '/staic/'  # 静态文件的代理路由
STATICFILES_DIRS = (
	os.path.join(BASE_DIR,"static"),  # 静态文件的路径拼接
)
  • 前端使用静态文件,已使用图片为例
    1. 第一种
      在这里插入图片描述

    2. 第二种
      在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值