今天,小叮當(dāng)繼續(xù)為大家分享Django的干貨。主要內(nèi)容有:模板路徑配置和變量、常用過(guò)濾器以及靜態(tài)文件的引用。

?一、模板路徑配置
1.redirect重定向傳參
我們?nèi)砸浴癶ello_django"項(xiàng)目為例,上次我們配置的”article2"即為redirect重定向。

?我們到urls.py中配置相應(yīng)的路徑,傳入相應(yīng)的參數(shù)"num"
path('article_new/<num>/', views.article2,name="article2"),
如下

我們?cè)趘iews.py中相應(yīng)部分接受參數(shù)即可。
def article(request,num,**kwargs): ? ? ? ?return redirect('article_new/%s'%num)
如下

在瀏覽器中測(cè)試

值得注意的是,當(dāng)視圖函數(shù)重定向,有reverse函數(shù)時(shí),我們可通過(guò)“args"進(jìn)行傳參,但傳參的對(duì)象是元組。
def article(request,num,**kwargs): ? ? ? ?return redirect(reverse('article2'),args=(num,))
2.模版路徑配置的兩種方法
(1)templates放在主目錄下
這種模版的創(chuàng)建方法就是,在項(xiàng)目主目錄下創(chuàng)建“templates"文件夾,在“templates"文件夾下創(chuàng)建對(duì)應(yīng)app的文件夾,將對(duì)應(yīng)的html文件放到其中。通過(guò)設(shè)置“settings.py"中的“DIRS"來(lái)尋找模板文件。

(2)templates放在app目錄下
首先值得注意的是,templates放在app目錄下時(shí),文件夾的名稱(chēng)必須為“templates” ,之后在主目錄中的“settings.py”中找到“INSTALLED_APPS"在其中注冊(cè)app
例如,在book目錄下新建“templates”文件夾

新建book_index.html,返回“我是在名字為book的app下新建的模板”

在”INSTALLED_APPS“中,注冊(cè)app,填寫(xiě)對(duì)應(yīng)的app名稱(chēng)即可。

檢查“settings.py"中的”TEMPLATES"中“APP_DIRS"是否為"True"(默認(rèn)情況下為T(mén)rue),若不為T(mén)rue,app將不會(huì)注冊(cè)成功。

在app的views.py中編寫(xiě)視圖函數(shù)渲染模板。
def test_app(request,**kwargs): ? ?return render(request,'book_index.html')
在urls.py中配置相應(yīng)的訪問(wèn)url

具體代碼如下:
path('test/',views.test_app),
在瀏覽器中測(cè)試:
輸入網(wǎng)址:“http://192.168.255.130:8000/book/test/”

二、模板變量
當(dāng)我們登錄qq郵箱后,qq郵箱頁(yè)面便會(huì)顯示我們的昵稱(chēng),不同的用戶登錄,在qq郵箱頁(yè)面相應(yīng)的位置便會(huì)顯示不同的昵稱(chēng)。

這是怎么做到的呢?其實(shí),這就是一個(gè)模板變量,根據(jù)不同的后臺(tái)數(shù)據(jù),模板響應(yīng)不同的數(shù)據(jù)。
1.以上幾次創(chuàng)建好的“movie” app為例說(shuō)明
(1)在movie文件夾下新建urls.py

代碼如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*- ?__author__ = 'IT小叮當(dāng)'__time__ = '2019-01-16 16:34'from django.urls import path
urlpatterns=[
]
(2)使用include在主目錄的urls.py中

給“movie”的urls.py分配路由:
path('movie/',include('movie.urls'))
在templates文件夾建好的“movie”文件夾中新建movie的主頁(yè)模板“index”

代碼如下
movie主頁(yè)
我是{{ name }}
其中{{name}}即為模版變量,用來(lái)接受視圖函數(shù)返回的名為“name"的變量。
(3)在movie下的views.py中定義視圖函數(shù),用來(lái)渲染movie主頁(yè)模版

視圖函數(shù)代碼為:
from django.shortcuts import render
# Create your views here.def index(request): ? ?myname='IT小叮當(dāng)' ? ?return render(request,'movie/index.html',context={'name':myname})
(4)在創(chuàng)建好的movie下的urls.py中導(dǎo)入views.py,并為movie主頁(yè)添加路由

代碼如下
#!/usr/bin/env python
# -*- coding:utf-8 -*- ?__author__ = 'IT小叮當(dāng)'__time__ = '2019-01-16 16:34'from django.urls import path
from . import views
urlpatterns=[
path('index/',views.index),]
(5)啟動(dòng)服務(wù)后,在瀏覽器中查看
輸入網(wǎng)址”?http://192.168.255.130:8000/movie/index/ “

可以看到模版變量已經(jīng)渲染成功。
2.模版變量可以是多種類(lèi)型
(1)重新定義movie下views.py
from django.shortcuts import render
# Create your views here.
#定義函數(shù)def hello(): ? ?return '大家好,這是小叮當(dāng)自定義的函數(shù)!'#定義類(lèi)class xdd: ? ?def __init__(self,name,age): ? ? ? ?self.name=name ? ? ? ?self.age=age ? ?def say(self): ? ? ? ?return '大家好!我是IT小叮當(dāng),這是在類(lèi)里建的方法!'xdd_info=xdd('IT小叮當(dāng)',18)
#定義列表li=['a','b','c']
#定義字典di={'x':1,'y':2}
def index(request): ? ?return render(request,'movie/index.html',
context={'strname':'我是字符串',#傳遞字符串 ? ? ? ? ? ? ? ? ? ? ? ? ? 'hello':hello,#傳遞自定義函數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? 'xdd_say':xdd_info.say,#傳遞類(lèi)方法 ? ? ? ? ? ? ? ? ? ? ? ? ? 'xdd':xdd_info,#傳遞類(lèi)對(duì)象 ? ? ? ? ? ? ? ? ? ? ? ? ? 'list':li,#傳遞列表 ? ? ? ? ? ? ? ? ? ? ? ? ? 'dict':di,#傳遞字典 ? ? ? ? ? ? ? ? ? ? ? ? ? }
)
(2)重新定義”templates"下movie中的index.html模版文件
movie主頁(yè)
模板變量為字符串:{{ strname }}
模板變量為函數(shù)對(duì)象:{{ hello }}
模板變量為類(lèi)方法對(duì)象:{{ xdd_say }}
模版變量為類(lèi)對(duì)象:{{ xdd }}
模版變量為類(lèi)對(duì)象,并訪問(wèn)類(lèi)對(duì)象的屬性:{{ xdd.name }}
模版變量為類(lèi)對(duì)象,并訪問(wèn)類(lèi)對(duì)象的方法:{{ xdd.say }}
模版變量為列表對(duì)象:{{ list }}
模版變量為列表對(duì)象,訪問(wèn)列表的元素{{ list.1 }}
模版變量為字典對(duì)象{{ dict }}
模版變量為字典對(duì)象,訪問(wèn)字典的鍵{{ dict.x }}
(3)在瀏覽器中測(cè)試
輸入“http://192.168.255.130:8000/movie/index/”

3.小結(jié)
模版變量使用規(guī)則:
(1)語(yǔ)法:??{{ 變量名}}
(2)命名由字母和數(shù)字以及下劃線組成,不能有空格和標(biāo)點(diǎn)符號(hào)
(3)可以使用字典、模型、方法、函數(shù)、列表
(4)不要和python或django關(guān)鍵字重名
(5)如果data是一個(gè)字典,那么訪問(wèn)data.items將會(huì)訪問(wèn)data這個(gè)字典的key名為items的值,而不會(huì)訪問(wèn)字典的items方法。
(6)點(diǎn)在模板渲染時(shí)有特殊的含義。 變量名中點(diǎn)表示查找。?
三、常用過(guò)濾器
所謂過(guò)濾器,就是可以將模版?zhèn)鬟^(guò)來(lái)的變量進(jìn)行過(guò)濾,使之符合我們想要的結(jié)果。
準(zhǔn)備工作
(1)重新定義movie下的views.py文件
from django.shortcuts import render
# Create your views here.
mytest="THIS IS TEST!"def index(request): ? ?return render(request,'movie/index.html',
context={ ? ? ? ? ? ? ? ? ? ? ? ? ? 'test':mytest,
}
)
(2)重新定義“templates"文件下movie中的index.html文件
movie主頁(yè)
原始的模版變量:{{ test }}
變小寫(xiě):{{ test|lower }}
(3)?瀏覽器中訪問(wèn):
輸入” http://192.168.255.130:8000/movie/index/“

小結(jié):可見(jiàn)過(guò)濾器就是在模版變量后加上豎杠”|“之后寫(xiě)上相應(yīng)的過(guò)濾器名稱(chēng),即可實(shí)現(xiàn)對(duì)模版變量的過(guò)濾功能。
2.空值過(guò)濾器
(1)default
當(dāng)模版變量不存在(沒(méi)有在視圖函數(shù)中定義而在模版中直接使用)時(shí),系統(tǒng)會(huì)默認(rèn)其值為空。
例如,我們?cè)谀0嬷兄苯邮褂脁dd666變量,而沒(méi)有在views.py中定義時(shí)

在瀏覽器中訪問(wèn)

我們發(fā)現(xiàn)頁(yè)面沒(méi)有報(bào)錯(cuò),xxxxx與yyyy直接拼接在了一起。這說(shuō)明當(dāng)模版變量不存在時(shí),系統(tǒng)會(huì)默認(rèn)其為空值。
我們?yōu)檫@個(gè)不存在的模版變量加上default過(guò)濾器,并設(shè)值為”我不在“
xxxxxx{{ xdd666|default:'我不在'}}yyyy
再次在瀏覽器中訪問(wèn)

這說(shuō)明,default過(guò)濾器的作用是,為”沒(méi)有在視圖函數(shù)中定義而直接在模版中使用的變量”設(shè)置默認(rèn)值,而對(duì)于定義過(guò)的變量,則會(huì)使用定義過(guò)的值。
(2)default_if_none
對(duì)在模版中出現(xiàn)的未知定義使用default_if_none過(guò)濾器
xxxxxx{{ xdd666|default_if_none:'我不在'}}yyyy
在瀏覽器中發(fā)現(xiàn)其沒(méi)有效果?。?!

這是因?yàn)椤癲eault_if_none"過(guò)濾器針對(duì)的是,定義了的變量,只不過(guò)變量的值為none而已。這種情況,在數(shù)據(jù)庫(kù)查找時(shí),可能用的到。
在views.py中,傳入xdd666這個(gè)變量,并設(shè)置為None
def index(request): ? ?return render(request,'movie/index.html',
context={ ? ? ? ? ? ? ? ? ? ? ? ? ? 'test':mytest,
'xdd666':None,
}? ? ? ? ? ? ? ? ? )
重新在瀏覽器中訪問(wèn)

3.capfirst
值得注意的是,過(guò)濾器可接連使用。如下面的例子,將變量先全部變小寫(xiě)后,再將首字母變大寫(xiě)。
在模版中引入:
變小寫(xiě)后,首字母變大寫(xiě):{{ test|lower|capfirst }}
在瀏覽器中查看

可見(jiàn),capfirst的作用就是將變量的首字母變?yōu)榇髮?xiě)。
4.cut
cut過(guò)濾器后需跟參數(shù),表示刪除、切掉指定的參數(shù)。
過(guò)濾器的傳參格式為{{變量|過(guò)濾器:‘?參數(shù)’}}
模版中
切掉空格:{{ test|cut:' ' }}
切掉IS: {{ test|cut:'IS' }}
瀏覽器中查看

5.常用過(guò)濾器小結(jié)
常用的過(guò)濾器總結(jié)如下
1add:字符串相加,數(shù)字相加,列表相加,如果失敗,將會(huì)返回一個(gè)空字符串。
2default:提供一個(gè)默認(rèn)值,在這個(gè)值被django認(rèn)為是False的時(shí)候使用。比如:空字符串、None區(qū)別于default_if_none,這個(gè)只有在變量為None時(shí)才會(huì)使用默認(rèn)值。
3first:返回列表中的第一個(gè)值。
4last:返回列表中的最后一個(gè)值。
5date:格式化日期和時(shí)間
6time:格式化時(shí)間。
7join:跟python中的join一樣的用法。用于拼接字符串。
8length:返回字符串或者是數(shù)組的長(zhǎng)度。
9length_is:字符串或者是數(shù)組的長(zhǎng)度是否是指定的值。
10lower:把所有字符串都變成小寫(xiě)。
11truncatechars:根據(jù)后面給的參數(shù),截?cái)嘧址?,如果超過(guò)了用...表示。
12truncatewords:同truncatechars,這個(gè)是以一個(gè)單詞為單位進(jìn)行截?cái)唷R陨蟽蓚€(gè)有XXX_html類(lèi)型的,針對(duì)html,截?cái)鄻?biāo)簽中的字符,而不會(huì)截?cái)鄻?biāo)簽。
13capfirst:首字母大寫(xiě)。
14slice:切割列表。用法跟python中的切片操作是一樣的,區(qū)間是前閉合后開(kāi)放。
15striptags:去掉所有的html標(biāo)簽。
16safe:關(guān)閉變量的自動(dòng)轉(zhuǎn)義。
17floatformat:浮點(diǎn)數(shù)格式化。
(1)add舉例
視圖函數(shù)中定義num1值為18和num2值為2
def index(request): ? ?return render(request,'movie/index.html',
context={ ? ? ? ? ? ? ? ? ? ? ? ? ? 'test':mytest,
'xdd666':None,
'num1':18,
'num2':2,
}
)
模板中引用add
兩數(shù)相加: {{ num1|add:num2 }}
瀏覽器中查看

(2)first?和last舉例
視圖函數(shù)
#定義列表li=['a','b','c']
mytest="THIS IS TEST!"def index(request): ? ?return render(request,'movie/index.html',
context={ ? ? ? ? ? ? ? ? ? ? ? ? ? 'list':li,#傳遞列表 ? ? ? ? ? ? ? ? ? ? ? ? ? 'dict':di,#傳遞字典 ? ? ? ? ? ? ? ? ? ? ? ? ? 'test':mytest,
'xdd666':None,
'num1':18,
'num2':2,
}
)
模版定義
列表:{{ list }}
first取列表第一個(gè)值:{{ list|first }}
last取列表最后一個(gè)值:{{ list|last }}
瀏覽器查看

(3)join舉例
模板定義
join以“666"進(jìn)行拼接: {{ list|join:'666' }}
瀏覽器查看

(4)truncatechars和truncatewords舉例
當(dāng)我們?cè)L問(wèn)網(wǎng)頁(yè)時(shí),經(jīng)常遇到這種情況,訪問(wèn)的網(wǎng)址下面,沒(méi)有顯示全,會(huì)有”...“的出現(xiàn)。這種效果,就是通過(guò)truncatechars或是truncatewords來(lái)實(shí)現(xiàn)的。

模版定義
未截取:{{ test }}
截?cái)嘧址簕{ test|truncatechars:7 }}
截?cái)鄦卧~:{{ test|truncatewords:2 }}
瀏覽器查看

可以看到truncatechars過(guò)濾器,截?cái)嘁宰址麨閱挝?,包括?個(gè)點(diǎn)。如上,當(dāng)截?cái)?個(gè)字符時(shí),顯示的結(jié)果為T(mén)HIS...共7個(gè)字。
truncatewords過(guò)濾器,截?cái)嘁詥卧~為單位,如上,設(shè)置截?cái)酁?時(shí),得到了兩個(gè)單詞”THIS IS"還有3個(gè)點(diǎn).
(4)truncatechars_html和truncatewords_html舉例
當(dāng)truncatechars_html或truncatewords_html截?cái)嗟膶?duì)象為html標(biāo)簽內(nèi)容時(shí),標(biāo)簽不會(huì)被截?cái)?/b>。而truncatechars和truncatewords在截?cái)鄷r(shí),則會(huì)將標(biāo)簽計(jì)算在內(nèi)。
視圖函數(shù)中定義html變量
def index(request): ? ?return render(request,'movie/index.html',
context={
'html':'
THIS IS IN HTML!
' ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? )
模版中使用過(guò)濾器
未截?。簕{ html }}
截?cái)?字符:{{ html|truncatechars:7 }}
截?cái)?單詞:{{ html|truncatewords:2 }}
截?cái)?字符_html:{{ html|truncatechars_html:7 }}
截?cái)?單詞_html:{{ html|truncatewords_html:2 }}
瀏覽器中顯示

(5)slice舉例
需要注意的是slice切片的區(qū)間,寫(xiě)在過(guò)濾器后的字符串中,以冒號(hào)隔開(kāi),區(qū)間是左閉右開(kāi)。
模版定義
列表:{{ list }}
切片[1:2]的結(jié)果 :{{ list|slice:'1:2' }}
瀏覽器中顯示

(6)striptags和safe舉例
striptags對(duì)帶有html標(biāo)簽的變量,能夠?qū)⑵錁?biāo)簽去掉。而safe對(duì)帶有html標(biāo)簽的變量,能夠?qū)⑵湫Ч@示出來(lái)。
模版中定義
原始:{{ html }}
去掉標(biāo)簽:{{ html|striptags }}
顯示標(biāo)簽效果:{{ html|safe }}
瀏覽器中查看

(7)floatformat舉例
在視圖函數(shù)中定義float浮點(diǎn)變量
def index(request): ? ?return render(request,'movie/index.html',
context={
'float':3.1415 ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? )
模版中使用過(guò)濾器,保留3位小數(shù)(默認(rèn)是保留1位小數(shù))
保留3位小數(shù):{{ float|floatformat:3 }}
瀏覽器中顯示

(8)length和length_is舉例
length過(guò)濾器用來(lái)返回變量的長(zhǎng)度,length_is過(guò)濾器用來(lái)返回“True"或"False"用來(lái)判斷變量長(zhǎng)度是否為某個(gè)值。
模板定義
列表為:{{ list }}
列表長(zhǎng)度為:{{ list|length }}
列表長(zhǎng)度是否為4:{{ list|length_is:4 }}
列表長(zhǎng)度是否為3:{{ list|length_is:3 }}
瀏覽器中查看
6.date和time過(guò)濾器

date和time過(guò)濾器的格式如下
1Y:??四位數(shù)的年。如2019
2y:??兩位數(shù)的年。如19
3m:??兩位數(shù)的月。如01,06
4n:??一位數(shù)的月。如1,2,12
5d:??兩位數(shù)的日。如01,02,31
6j:??一位數(shù)的日。如1,3,31
7g:??12小時(shí)制的一位數(shù)的小時(shí)。如1,2,12
8G:??24小時(shí)制的一位數(shù)的小時(shí)。如0,8,23
9h:???12小時(shí)制的兩位數(shù)的小時(shí)。如01,08,12
10H:???24小時(shí)制的兩位數(shù)的小時(shí)。如01,13,24
11i:???分鐘。從00-59
12s:???秒。?從00-59
(1)時(shí)間獲取與時(shí)差更正
在views.py中導(dǎo)入datetime模塊,定義”now"變量表示當(dāng)前時(shí)間
#導(dǎo)入時(shí)間模塊import datetime
def index(request): ? ?return render(request,'movie/index.html',
context={
'now':datetime.datetime.now
}? ? ? ? ? ? ? ? ? )
在模版中定義
當(dāng)前時(shí)間為:{{ now }}
在瀏覽器中查看

此時(shí),我們發(fā)現(xiàn),系統(tǒng)輸出的時(shí)間和我們的本地時(shí)間,相差了8個(gè)小時(shí),也就是說(shuō)有8個(gè)小時(shí)的時(shí)差?。?!
下面我們來(lái)進(jìn)行時(shí)差的更正:
我們找到主目錄下的settings.py文件中的“TIME_ZONE"其默認(rèn)值為'UTC'

我們將其改為“Asia/Shanghai”(亞洲/上海)時(shí)區(qū)
TIME_ZONE = 'Asia/Shanghai'
之后,在瀏覽器中重新查看,發(fā)現(xiàn)時(shí)間已和我們的本地時(shí)間一致。

(2)date和time過(guò)濾器的使用
從上可以看到,系統(tǒng)默認(rèn)的時(shí)間輸出格式是,“月-日-年-時(shí)間(a.m.(上午)或p.m.(下午))這符合英美的習(xí)慣卻不符合我們的”年-月-日“時(shí)間習(xí)慣。這時(shí),我們便可以使用過(guò)濾器來(lái)控制時(shí)間的格式輸出。
模版定義
系統(tǒng)默認(rèn)輸出當(dāng)前時(shí)間為:{{ now }}
自定義輸出當(dāng)前時(shí)間:{{ now|date:'Y-n-d-H:i:s' }}
默認(rèn)time輸出:{{ now|time }}
自定義time輸出:{{ now|time:'H:i:s' }}
在瀏覽器中查看

四、靜態(tài)文件的引用
例如css、js、圖片都屬于靜態(tài)文件,在Django項(xiàng)目中,我們?nèi)绾我媚兀?/p>
1.環(huán)境配置
(1)在項(xiàng)目目錄中創(chuàng)建”static"文件夾,在其文件夾下創(chuàng)建“css”、“js”、“images”子文件夾。

(2)在主目錄中的settings.py?的最后配置“static"的路徑(類(lèi)似于templates的配置)
系統(tǒng)默認(rèn)為我們建好了”static"的路由

如果沒(méi)有,我們可以自己創(chuàng)建
STATIC_URL = '/static/'
另外,我們需要再建立一個(gè)變量“STATICFILES_DIRS”,類(lèi)似于templates的“DIR",也是一個(gè)列表。
STATICFILES_DIRS=[
]
我們?cè)谄渲袑?xiě)入”static"的文件路徑
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')]
2.新建css、js文件,導(dǎo)入本地圖片
(1)在css文件夾下新建css文件 ,控制背景顏色為天藍(lán)色(用來(lái)測(cè)試)

起名為“mystyle"

控制背景顏色為天藍(lán)

輸入代碼如下
body{
background:skyblue;}
(2)在js文件夾下新建js文件 ,進(jìn)行彈窗(用來(lái)測(cè)試)

起名為”myjs"

彈窗輸出“大家好!我是IT小叮當(dāng)!”

輸入代碼如下:
alert('大家好!我是IT小叮當(dāng)');
(3)在images文件夾下隨意導(dǎo)入一張本地圖片 (用來(lái)測(cè)試)
直接選中本地圖片,將其拖到“images"文件夾中,pycharm將會(huì)自動(dòng)彈出"move"界面,選擇”ok"即可。

3.創(chuàng)建模版、視圖函數(shù)、配置路由
(1)在templates下movie中新建“static_test.html"(用來(lái)測(cè)試)

代碼如下:
靜態(tài)文件引用
(2)在movie下的views.py中新建視圖函數(shù)
def static_test(request): ? ?return render(request,'movie/static_test.html')
(3)在movie下的urls.py中配置路由

代碼如下
path('static/',views.static_test),
(4)每次新建文件后都要確保文件上傳到虛擬機(jī)中的服務(wù)器上
可以在”file transer"中查看

也可以自己手動(dòng)上傳,在項(xiàng)目文件夾處,右鍵找到“Deployment”--"upload to xxx"(xxx為你建立的遠(yuǎn)程會(huì)話連接)

3.靜態(tài)文件引用方式一:絕對(duì)路徑引用
(1)使用link中的href加絕對(duì)路徑引用css
<link rel="stylesheet" href="/static/css/mystyle.css">
(2)使用script中的src加絕對(duì)路徑引用js
<script src="/static/js/myjs.js"></script>
(3)使用img中的src加絕對(duì)路徑引用圖片
<img src="/static/images/二維碼.jpg">
整體的代碼如下:
靜態(tài)文件引用
在瀏覽器中查看,首先彈出彈窗,這說(shuō)明js引用成功。

點(diǎn)擊確定后,出現(xiàn)藍(lán)色背景,說(shuō)明css引用成功;出現(xiàn)圖片,說(shuō)明圖片引用成功。
4.靜態(tài)文件引用方式二:模版標(biāo)簽引用
對(duì)于靜態(tài)文件,我們也可以通過(guò)load加載的方式引用
(1)load加載static
{% load static %}
(2)使用link中的href用模版標(biāo)簽的方法引用css
<link rel="stylesheet" href="{% static 'css/mystyle.css' %}">
(3)使用script中的src用模版標(biāo)簽的方法引用引用js
<script src="{% static 'js/myjs.js' %}"></script>
(4)使用img中的src和模版標(biāo)簽的方法引用圖片
<img src="{% static 'images/二維碼.jpg' %}">
整體的代碼如下:
{% load static %}
靜態(tài)文件引用 ? ?
在瀏覽器中查看,首先彈出彈窗,這說(shuō)明使用模版標(biāo)簽的方法js引用成功。

點(diǎn)擊確定后,出現(xiàn)藍(lán)色背景,說(shuō)明通過(guò)模版標(biāo)簽的方法css引用成功;出現(xiàn)圖片,說(shuō)明通過(guò)模版標(biāo)簽的方法圖片引用成功。
小結(jié):
(1)模版標(biāo)簽的引用靜態(tài)文件的方法,是把“static"文件夾引用進(jìn)來(lái)了,只要在”static"文件夾下的文件都能找到。
(2)絕對(duì)路徑引用靜態(tài)文件的方法,是明確的定位到某個(gè)文件,獨(dú)一無(wú)二。
(3)模版標(biāo)簽更像是引用到了一個(gè)房間,再?gòu)姆块g內(nèi)找到個(gè)人,在房間內(nèi)的文件都可引用,;絕對(duì)路徑引用就像是定位到了房間內(nèi)的個(gè)人具體位置。