Django 3.2.5博客开发教程:一些常用的模板使用方法
一、django static文件的引入方式
1.在django project中創建 static文件夾
2.settings.py中配置要在 STATIC_URL = ‘/static/’ 下邊
或
STATICFILES_DIRS = os.path.join(BASE_DIR, 'static')在做基礎配置的時候,我們已經做好了。基礎配置
3.前端引入
在頁面頂部: {% load staticfiles %} #django2及之前的版本用這樣的方法django3用下面的 {% load static %} #django3 用這個語法#引入CSS、JS {% static 'xxx.css' %} {% static 'xxx.js' %}二、模板(template)包含、繼承與 {% block %} 的用法
使用模板前,先設置TEMPLATES里的’DIRS’,添加模板目錄templates的路徑,這樣Django才能自動找到模板頁面:
#修改前 'DIRS': [] #修改后 'DIRS': [os.path.join(BASE_DIR, 'templates')]Django模板存放方式有兩種方法:
1、在項目根下創建templates目錄,然后把模板存入在templates目錄里,多個APP的話,就直接在templates目錄下建立與APP名相同名稱的目錄即可。Django會自動查找到,這種方法簡單、直觀,適合個人或小項目。
2、各個APP下單獨建立一個templates目錄,然后再建立一個與項目名相同的的目錄,把模板放到對應的目錄里。這樣的方法適合大項目多人協作,每個人只負責各自的APP項目的時候。多樣式多站點(域名)的情況也適用,不同的APP用不同的模板樣式,不同的域名。
兩種方法,模板調用方法一樣:
return render(request, 'app/index.html', context)兩種方法各有優點,大家選適合自己的就好,后面本教程就用第一個方法。
模板包含
以我們的演示站為例,http://demo.django.cn/ 我們可以看到,網站所有頁面的頭部和尾部都一樣,只有中間的部分不一樣。這時我們就可以把這個頁面分為三個部分,每個部分分別存放在頁面head.html、index.html、footer.html中,其中,頭部head.html用來放所有頁面頭部相同的代碼、主體部分index.html放與其它頁面不相同的代碼、尾部head.html放與其它頁面尾部相同的代碼。
舉例,我們的首頁代碼如下:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>MyBlog</title> </head> <body> <div>頭部</div><div>中部</div><div>尾部</div></div> </body> </html>這時我們把這個頁面分成三個頁面,內容分別如下:
頭部head.html
templates/head.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>MyBlog</title> </head> <body> <div>頭部</div>主體部分index.html
templates/index.html
<div>中部</div>尾部footer.html
templates/footer.html
<div>尾部</div> </div> </body> </html>假如,我們想實現首頁模板調用的時候,我們可以這樣做,就能合并成一個完整的首頁代碼如下:
templates/index.html
{% include 'head.html' %} <div>中部</div> {% include 'footer.html' %}我們只需要在主體代碼的頭部和尾部分別用{% include ‘head.html’ %}和{% include ‘footer.html’ %}標簽把頭部文件和尾部文件包含進來,就能組合成一個完整的頁面。這樣的方法就是模板包含,我們其它頁面只要是頭部和尾部都相同的,我們只需要把這兩個文件分別包含進來就行了。
這種方法還適用于另一種情況。比如我們所有頁面的主體部分,其中有一小塊代碼都是相同的,我們在做模板的時候,如果內容需要修改的話,每個頁面都要修改一次,很麻煩,并浪費時間。我們可以把這個代碼單獨提取出來,放在另一個頁面xxx.html里,在調用的時候,我們只需要通過這個代碼{% include ‘xxx.html’ %}就能把頁面xxx.html包含進來。具體的,還需要大家根據頁面的實際情況靈活使用。
模板繼承
還是以上面的代碼為例,我們的頁面index.html代碼:
index.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>MyBlog</title> </head> <body> <div>頭部</div><div>中部</div><div>尾部</div></div> </body> </html>我們把所有頁面相同的代碼單獨提取出來放在 base.html頁面里,然后在代碼不同的位置,也就是主體那里用模板標簽{% block content %} {% endblock %}替換。
templates/base.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>MyBlog</title> </head> <body> <div>頭部</div>{% block content %}{% endblock %}<div>尾部</div></div> </body> </html>在實現首頁模板的時候,我們通過下面的代碼實現,組合成一個完整的首頁:
templates/index.html
{% extends "base.html" %} {% block content %} <div>中部</div> {% endblock %}這里里面的{% extends “base.html” %} 的意思是繼承 base.html頁面的代碼,需要留意的是,使用繼承方法的話,這個代碼一定要放頁面的第一行。
我們還看到,兩個頁面里都有代碼{% block xxx %}{% endblock %} 代碼{% block xxx %}{% endblock %} 里的xxx可以自由命名,這個代碼意思是告訴模板引擎:這個位置我要預留給別人放東西的。這個部分子模板可以重載,每個{% block%}標簽所要做的是告訴模板引擎,該模板下的這一塊內容將有可能被子模板覆蓋。
一般這個代碼要父模板base.html里定義好,才可以在別的子模板上引用。引用的時候我們以{% block xxx %}開始,把代碼放在這個標記對中間,最后以 {% endblock %}結尾。
{% block %} 標簽非常有用,一般來說,基礎模板中的 {% block %} 標簽越多越好,用起來也會更靈活。例如,我的子頁面想要多引用一個CSS樣式文件,這個樣式只需要應用在當前頁面就行。我們可以在base.html模板里多加一個{% block css %} {% endblock %}標簽,然后在子模板頁面里加入代碼:
{% block css %}#CSS樣式文件路徑 <link href='{% static "css/style.css" %}' type='text/css' />{% endblock %}這樣的話,這個CSS就只在當前頁面生效。
這樣的應用場景非常多,比如我們做SEO的時候,不同頁面要放不同的標題、關鍵詞、描述等。
提示:不允許在同一個模板中定義多個同名的 {% block %} ,不然就會出錯。
模板的一些基本用法就介紹到這里。下面的章節就教大家如何實現網站的各個功能模塊和各個頁面的展現!
這里我把之前的源碼都打包一份,大家可以下載下來對比一下。里面有一些數據,后臺帳號密碼是:admin qq445813 需要用到的軟件和版本號都放在文件requirements.txt里。如果添加數據出錯,請查看使用富文本編輯器添加數據解決。
myblog.zip
參考鏈接:Django博客開發教程:一些常用的模板使用方法
總結
以上是生活随笔為你收集整理的Django 3.2.5博客开发教程:一些常用的模板使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django 3.2.5博客开发教程:实
- 下一篇: Django 3.2.5博客开发教程:体