零基礎(chǔ)入手Django(三):模板變量

今天,小叮當(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_htmltruncatewords_html截?cái)嗟膶?duì)象為html標(biāo)簽內(nèi)容時(shí),標(biāo)簽不會(huì)被截?cái)?/b>。而truncatecharstruncatewords在截?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è)人具體位置。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容