django系列4.2--自定義標籤, 自定義過濾器, inclusion_tag, 引入靜態文件(css,js等)

###項目的目錄爲 css

在app中建立templates時,最好要再建立一個app名相同的文件夾,由於項目找文件時從第一個app開始遍歷,不一樣app內的同名文件會有衝突,因此這樣處理html

一.自定義標籤和過濾器

1.在settings中的INSTALLED_APPS配置當前app,不然django沒法找到自定義的simple_tagpython

2.在app中建立templatetags模塊(模塊名只能是templatetags)django

3.建立 任意名稱的.py 文件,如: my_tags.pyapp

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.pyui

{% load my_tags %}

5.使用simple_tag和filterspa

{% load xxx %}

{{ num|filter_multi:2 }}

filter能夠用在if,for等語句後面, simple_tag不能夠code

<br/>orm

二.inclusion_tag

多用於返回html代碼片斷 htm

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>

<br/>

三.引入靜態文件

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!" />
相關文章
相關標籤/搜索