django系列4.2--自定义标签, 自定义过滤器, inclusion_tag, 引入静态文件(css,js等)
项目的目录为

在app中创建templates时,最好要再创建一个app名相同的文件夹,因为项目找文件时从第一个app开始遍历,不同app内的同名文件会有冲突,所以这样处理
一.自定义标签和过滤器
1.在settings中的INSTALLED_APPS配置当前app,否则django无法找到自定义的simple_tag
2.在app中创建templatetags模块(模块名只能是templatetags)
3.创建 任意名称的.py 文件,如: my_tags.py
from django import template
from django.utils.safestring import mark_safe
register = template.Library()   #register的名字是固定的,不可改变
@register.filter
def filter_multi(v1,v2):
	return v1 * v2
@register.simple_tag
def simple_tag_multi(v1,v2):
	return v1 * v2
@register.simple_tag
def my_input(id,arg):
	result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
	return mark_safe(result)
4.使用自定义simple_tag和filter的html文件中导入之前创建的my_tags.py
{% load my_tags %}
5.使用simple_tag和filter
{% load xxx %}
{{ num|filter_multi:2 }}
filter可以用在if,for等语句后面, simple_tag不可以
二.inclusion_tag
多用于返回html代码片段

templates/my_inclusion.py
from django import template
register = template.Library()
@register.inclusion_tag('result.html')
def show_results(n):
	n = 1 if n<1 else int(n)
	data = ["第{}项".format(i) for i in range(1, n+1)]
	return {"data": data}
templates/snippets/result.html
<ul>
  {% for choice in data %}
    <li>{{ choice }}</li>
  {% endfor %}
</ul>
templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>inclusion_tag test</title>
</head>
<body>
{% load my_inclusion %}
{% show_results 10 %}
</body>
</html>
三.引入静态文件
js, css, img 文件等都叫做静态文件, 那么关于django中静态文件的配置, 我们就需要在settings配置文件里面协商这些内容
STATIC_URL = '/xxx/'  # 别名
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,"jingtaiwenjian"),
]
{% static %}
{% load static %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
引用js文件时使用:
{% load static %}
<script src="{% static "mytest.js" %}"></script>
某个文件多处被用到可以存为一个变量
{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>
{% get_static_prefix %}
{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />
或
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}
<img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!" />
												
											django系列4.2--自定义标签, 自定义过滤器, inclusion_tag, 引入静态文件(css,js等)的更多相关文章
- django基础知识之管理静态文件css,js,images:
		
管理静态文件 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义静态内容 STATIC_URL = '/static/' STATICFILES_DIRS = [ o ...
 - django模板-自定义标签、过滤器
		
自定义标签或者过滤器的步骤 ①将要创建自定义标签或过滤器的app加入settings文件的installed_apps中 ②在app中创建templatetags目录,类型为包即packages ③在 ...
 - Django 自定义标签与过滤器报错 No module named 'templatetags'
		
Django 自定义标签与过滤器报错 按照网上的教程如果想使用自定义的标签与过滤器就得往settings.py中添加下列数据 TEMPLATES = [ { 'BACKEND': 'django.te ...
 - JSP自定义标签/自定义标签打包
		
有这样一个业务需求: 当我们在编辑某个用户时,需要设置该用户的角色,在转到编辑页面时,就需要自动勾选上该用户已经选择的角色,如下图: 当我们点击编辑时,会查询用户详细信息,以及角色集合传到编辑页面. ...
 - 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!
		
擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...
 - Django基础学习五_引入静态文件
		
今天继续学习Django,今天主要掌握两个小点 一.如果为Django项目中引入静态文件 1.先要在project目录下创建static的目录,然后将jquery文件拷贝这个目录下就可以了 2.在pr ...
 - Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件
		
模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...
 - day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间
		
day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...
 - MVC小系列(五)【在过滤器里引入重定向】
		
在过滤器里引入重定向 过滤器的引入:如果用户进行一个操作,但没有登录,可以在Post方法上加个过滤器以验证用户是否登录,如果登录成功,则继续进行操作,如果没有登录,则实现Url的重定向,进行登录页 授 ...
 
随机推荐
- web api的新玩法
			
前言: 目前大多数的.net core 项目的web api 都是用的json作为数据传输格式,或者说几乎是所有的都是,可是有没有想过换一种数据传输格式怎么处理,比如XML,或者谷歌首推的Protob ...
 - 高分辨率下firefox字体和界面自动放大的问题
			
电脑是高分屏的情况下,如果我们将DPI调成100%,屏幕字体太小,所以我们经常将DPI设置成125%或者其它,这样屏幕看起来会舒服些.但随之而来的是火狐浏览器的字体界面也会放大, 这也会直接导致我们在 ...
 - Motion Blur
			
[Motion Blur] 此篇介绍最简单的全局Motion Blur.算法是将当前帧与前一帧按某一比例混合.这是一个过程,例如有10帧,在第1帧中,只有第1帧原图,第2帧中有1.2帧原图,第3帧中会 ...
 - javascript的构造函数和实例对象、prototype和__proto__的区别,原型对象及构造器的理解
			
一.前言 我们先通过代码来分别打印出实例对象.构造函数,以及修改了原型对象的构造函数,通过对比内部结构来看看他们之间的区别. //定义构造函数 function Person(name, age){ ...
 - MYISM表并发写请求过多 导致无法被读取解决方案
			
MyISAM锁调度是如何实现的呢,这也是一个很关键的问题.例如,当一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,此时MySQL将会如优先处理进程呢?通过研究表明,写进程将先获 ...
 - 一些使用的linux库
			
1.curl网络库 apt-get install libcurl4-openssl-dev sudo apt-get install curl 2.jsoncpp库 sudo apt-get ins ...
 - Laravel 使用 seeder 使用要点
			
一.关于 DB use DB; 再使用 DB::table(database.table)->get(); 二.关于 ERROR 1366 (HY000): Incorrect string v ...
 - [SoapUI]获取Project,Test Suite,Test Case各个级别参数的值
			
String testResultPath = testRunner.testCase.testSuite.project.getPropertyValue( "testResultPath ...
 - 455. Assign Cookies
			
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
 - UVa 506 System Dependencies (细节问题)
			
题意:输入几种指令,让你进行模拟操作,指令如下: DEPEND item1 item2 (item3 ...) 安装item1需要先安装item2(.item3……) INSTALL item1 安装 ...