第3节----Django之模板使用

本章节主要介绍怎么设置模板路径?如何使用模板变量,过滤器,静态文件的配置

一.如何设置模板文件的路径??????

设置模板文件的路径有两种方法,第一种是直接在项目文件夹下的templates放置html文件,第二种是在app文件夹下的templates下放置html文件

路径效果图 

setting.py设置图

将模板文件放置在app种时候,需要在INSTALLED_APPS中添加app名字

二.如何使用模板变量

1.模板变量的使用规则

1.格式:{{变量名字}}
2.变量名字和python使用一样,包含下划线数字字母
3.不用python,django的关键字
4.可以用字典,列表,函数,类,模型
5.变量和查找
注意:data为字典data.items指的是key为“items的值,不会访问items方法
变量中的‘.’有特殊含义表示查找

 2.模板变量使用的例子

在student下的urls.py,views.py中添加代码

student/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>Django</h1><br>
    <h1>{{ list.2}}</h1><br>
    <h1>{{ dict.name}}</h1><br>
    <h1>{{ cla}}</h1><br>
    <h1>{{ run}}</h1><br>

</body>
</html>

student/urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),#path传参数
]

student/views.py

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse

import datetime
li = [1, 3, 5, 7, 9]
dic = {"name": "华五"}
class A:
    def __init__(self,name,id):
        self.name = name
        self.id = id

    def join(self):
        return (self.id)
    print(11111111)

stu1 = A("华五",123)

def index(request):
  return render(request, "index.html", context={"list": li, "dict": dic, "cla": stu1,"run": stu1 .join()})

运行结果:

 三.模板变量的过滤器

1.普通语法 {{name|lower}},意思是对name对应的值进行小写
2.链式调用{{name|lower|capfirst}},意思是先对name的值进行小写,再对第一个字母大写
3.使用参数{{name|cut:"a"}}去掉name值中的a

常用的过滤器

student/urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path("filter/", views.filter),
]

student/views.py

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse

from datetime import datetime
li = [1, 3, 5, 7, 9]
dic = {"name": "华五"}
class A:
    def __init__(self,name,id):
        self.name = name
        self.id = id

    def join(self):
        return (self.id)
    print(11111111)

now = datetime.now()
print(now)
stu1 = A("华五",123)

def index(request):
    return render(request, "index.html", context={"list": li, "dict": dic, "cla": stu1,"run": stu1 .join()})


def filter(request):
    return render(request,'student/filter.html',context={'name':'哈哈',
                                                         'num1': 1,
                                                         'num2': 2,
                                                         'li': [1,2,3,4,5],
                                                         'default': '123',
                                                         'date': now,
                                                         'join': 'as123',
                                                         'str': 'my name is hauwu',
                                                         'tags':'aa.<html> asa.<html>',
                                                         'safe':'&lt;',
                                                         'float1':3.11111,

                                                         })

student/templates/filter.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <h5>没过滤的模板变量:{{ name}}</h5>
    <h5>add加法:{{ num|add:num2}}</h5>
    <h5>first返回列表中第一个值:{{ li|first}}</h5>
    <h5>last返回列表最后一个值:{{ li|last}}</h5>
    <h5>default,只有{'default':''}为空字符串,none的时候才会是默认的,若有值则返回传入的值:{{ default|default:'456'}}</h5>
    <h5>date格式化日期:{{ date|date}}</h5>
    <h5>time格式化日期:{{ date|time}}</h5>
    <h5>join使用方法与python中的join一样:{{ join|join:'/'}}</h5>
    <h5>length返回字符串或者列表长度:{{ li|length}}</h5>
    <h5>length_is返回字符串长度是否是指定值:{{ li|length_is:5}}</h5>
    <h5>lower返回字符串长度是否是指定值:{{ str|lower}}</h5>
    <h5>truncatechars根据给定的字符断字符,超过了用...表示:{{ str|truncatechars:5}}</h5>
    <h5>truncatewords根据给定的字符串断字符,超过了用...表示:{{ str|truncatewords:1}}</h5>
    <h5>capfirst第一个字母大写:{{ str|capfirst}}</h5>
    <h5>slice切割列表:{{ str|slice:'0:5'}}</h5>
    <h5>striptags去掉所有html标签:{{ tags|striptags}}</h5>
    <h5>safe取消系统自动转义:{{ safe|safe}}</h5>
    <h5>floatformate浮点数格式化:{{ float1|floatformat:2}}</h5>

</body>
</html>

运行结果

date和time过滤器格式

Y:四位数的年。如:1999
y:两位数的年。如:99
m:两位数的月。如:01,09
n:一位数的月。如:1,9,12
d:两位数的日。如:01,09,31
j:一位数的日。如:1,9,31
g:12小时制的一位数的小时。如:1,9,12
G:24小时制的一位数小时。如:0,8,23
h:12小时制的两位数的小时。如:01,09,12
H:24小时制的两位数的小时。如:01,13,24
i:分钟。从00-59
s:秒。从00-59

什么是自动转义?

自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。
<:转义成&lt;
>:转义成&gt;
‘:转义成&#39;
“:转义成&quot;
&:转义成&amp;

四.静态文件加载

操作:在项目文件夹下新建static文件夹,再在static文件夹下建三个文件夹,js,css,images。在setting.py中设置

静态文件html例子

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>静态文件加载</title>
</head>
<body>
<link rel="stylesheet" href="{% static 'css/mystyle.css' %}">
<script src="{% static 'js/myjs.js' %}"></script>
图片:
<img src="{% static 'img/myimage.jpg' %}" alt="">
</body>
</html>

 

posted @ 2020-03-26 22:33  faval  阅读(99)  评论(0)    收藏  举报