自定义标签:
一、simple_tag,不能在摸板中使用 if 判断
from django import template
register = template.Library()
@register.simple_tag
def jiafa(a1,a2): --可以多个参数 (a1,a2,a3)
return a1 + a2
二、filter,可以使用if判断,最多只能有两个参数,一个是变量值,一个是选项值
<wiz_code_mirror>
@register.filter
def jiafadb(a1,a2): --不能多个参数只能在摸板传入拼接的字符串 然后分割
return a1+a2
三、引用方式
{% jiafa 2 5 %} --simple_tag
{{ 'dabao'|jiafadb:'woshishui'}} --filter
{{ 'dabao'|jiafadb:'woshishui,woshihsui'}} --传拼接字符串,在后台分割
mark_safe和format_html:
使用原因:
django从view向template传递HTML字符串的时候,django默认不渲染此HTML,原因是为了防止这段字符串里面有恶意攻击的代码。
mark_safe这个函数就是确认这段函数是安全的,不是恶意攻击的。
view层代码:
from django.utils.safestring import mark_safe
def index_view(request):
pageHtml = mark_safe("<a href='#'>首页</a>")
ret = {
'pageHtml':pageHtml
}
return render(request,'list.html',ret)
页面直接调用即可:
在list.html页面中,
<body>
{{ pageHtml }}
</body>
format_html和mark_safe非常类似,本质还是调用mark_safe函数,不同在于传参方式,mark_safe直接传递完整的html字符串;
而format_html需要使用{}占位符:
<wiz_code_mirror>
format_html('<span style="color:{};">{}</span>', color_code, obj.approval)
关于静态文件:
<wiz_code_mirror>
1.什么是静态文件
在Django中,不被解释器所动态解析的文件就是静态文件
2.Django中静态文件的处理
在settings.py中设置有关静态文件的信息:
1.设置静态文件的访问路径
在浏览器中通过哪个地址能够找到静态文件
STATIC_URL = '/static/'
如果访问路径是 http://localhost:8000/static/...,那么就到静态文件存储路径中找文件而不走路由(urls.py)
2.设置静态文件的存储路径
指定静态文件存储在服务器上的哪个位置处
STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
BASE_DIR :当前项目所在的绝对的路径
静态文件目录的存放位置:
1.在项目的根目录处创建一个 static 目录,用于保存静态文件们
2.每个应用中也可以创建一个 static 目录,用于保存静态文件们
3.访问静态文件
1.直接使用静态文件访问路径进行访问
http://localhost:8000/static/..
ex:
<img src="/static/images/a.jpg">
<img src="http://localhost:8000/static/images/a.jpg">
2.使用 {% static %} 访问静态资源
{% static %} 表示的就是静态资源的访问路径
1.在模板的最顶层增加
{% load static %}
2.在使用静态资源时
<img src="{% static 'images/a.jpg'%}">
<wiz_code_mirror>
示例:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- 显示静态资源文件 -->
<p>
<img src="/static/images/shuaige.jpg">
</p>
<p>
<img src="http://localhost:8000/static/images/shuaige.jpg">
</p>
<p>
<img src="{% static 'images/shuaige.jpg' %}">
</p>
</body>
</html>
使用摸板语法时注意:变量们必须要封装到字典中才能传递给模板