Django 模板引擎以及模板
2019獨角獸企業重金招聘Python工程師標準>>>
在Django框架中,可以使用兩種模板引擎,一種是默認的Django模板引擎,還有一種是Jinja2模板引擎;
1.模版引擎的作用和優點
模版引擎作用是將View視圖中需要在前端HTML頁面中展示的數據,通過模板引擎的語法規則,展示出來;
模版引擎優點是將業務邏輯的Python代碼和頁面設計的HTML代碼分離,使代碼更干凈整潔更容易維護,使Python程序員和HTML/CSS程序員分開協作,提高生產的效率,且將HTML代碼分離出來,還能使其能夠復用;
2.HTML模板存放的位置
HTML模板存放的位置有兩個,一個是存放在settings文件中指定的DIRS的目錄列表中,還有一個是直接在對應的APP包下,創建templates目錄,將HTML放置于此即可,不同APP對其他APP目錄下的templates目錄都是可見的;
3.模板引擎的配置
先在項目的settings.py文件中找到TEMPLATES變量,然后加入
TEMPLATES = [{# 選擇模板引擎,默認是Django的模板引擎'BACKEND': 'django.template.backends.django.DjangoTemplates',#或者是jinja2模版 'BACKEND': 'django.template.backends.jinja2.Jinja2'# 指定HTML模板存放的目錄,如果HTML模板較多,可以設置多個模板路徑'DIRS': [os.path.join(BASE_DIR, 'templates')],# APP_DIRS的值判斷是否支持將template目錄放置在APP中,Django默認支持值為True'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},}, ]4.Django模板引擎的模板語法
變量(VARIABLE):
{{ VARIABLE }} # 用于引入后臺傳入的變量 {{ VARIABLE.name }} {{ VARIABLE.age }}標簽(TAG):
{% TAG %} # 用于循環1: 正序 for 循環 {% for item in items %}<p>{{ forloop.counter }}</p><p>{{ item.name }}</p><p>{{ item.desc }}</p> {% endfor %}2: 倒敘 for 循環 {% for item in items reversed %}<p>{{ forloop.counter }}</p> # 記錄循環到第幾次,計數從1開始<p>{{ item.name }}</p><p>{{ item.desc }}</p> {% endfor %}3: 變量字典 {% for k,v in dictionary.items %}<p>{{ k }},{{ v}}</p> {% endfor %}5.Django模板的繼承的作用
在Django開發過程中,頁面中的重復部分,可以通過Django的模板繼承來完成,這樣使得頁面開發和管理更簡單;
在HTML頁面中使用到的關鍵字:
{% extends 這里填寫被繼承的HTML頁面 %}{% block 這里填寫繼承的block %} {% endblock %}{% include 這里填寫需要引入的HTML子頁面 %}6.如何實現繼承模板
我們知道了模板可以用繼承的方式來實現復用,那接下來我們一起來操作一下:
第一步:可以在項目的templates中先編寫好一個html頁面,作為網站的基礎頁面被其他頁面繼承,我的HTML頁面為base.html,然后在其中編輯HTML代碼,注意要修改的部分寫在{% block %} {% endblock %}的中間;
<body><div class="header">今天是星期幾呀</div><!-- 內容變化部分 -->{% block content %}<div class="content"><p>今天是星期一</p></div>{% endblock %}<div class="footer">好的,謝謝</div> </body>第二步:在你想要的app的templates目錄下創建一個html頁面,繼承之前的基礎頁面,我還是使用的courses app,創建一個python.html文件,這些名字都可以自己命名的,不過要注意路徑之類的;
{% extends 'base.html' %} {% block content %}<div class="content"><p>今天是星期{{ week_id }}</p></div> {% endblock %}第三步:在根路由urls.py中,添加訪問路徑的路由文件,一定要分清項目的了路由和app的路由喲;
url(r'^courses/', include(('courses.urls', 'courses'), namespace='courses')),第四步:在app的路由文件urls.py中添加要訪問的html路徑;
urlpatterns = [url(r'python/(?P<week_id>\d+)$', python, name='python') ]第五步:在app下的views.py中創建一個python函數;
from django.shortcuts import renderdef python(request, week_id):return render(request, 'python.html', {'week_id': week_id})然后我們就可以運行項目,運行項目依舊是打斷點,然后調試,我們看看結果是否是我們預期的結果呢,比如我的訪問路徑是
http://127.0.0.1:8000/courses/python/1python后面接數字,不然會報錯,因為我們在第四步中添加路由訪問的html路徑的時候正則表達式驗證必須是數組,這個可以大家自己修改的,可以按照自己的想法來做練習喲;
轉載于:https://my.oschina.net/u/4072026/blog/3052933
總結
以上是生活随笔為你收集整理的Django 模板引擎以及模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAD - 工具管理篇 - 安装
- 下一篇: 十年前范雅各布森关于bufferbloa