Django 模板引擎以及模板
在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 render
def python(request, week_id):
return render(request, 'python.html', {'week_id': week_id})
然後我們就可以執行專案,執行專案依舊是打斷點,然後除錯,我們看看結果是否是我們預期的結果呢,比如我的訪問路徑是
http://127.0.0.1:8000/courses/python/1
python後面接數字,不然會報錯,因為我們在第四步中新增路由訪問的html路徑的時候正規表示式驗證必須是陣列,這個可以大家自己修改的,可以按照自己的想法來做練習喲;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908432/viewspace-2645148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Django】將Django模板引擎更改為Jinja2Django
- Django模板Django
- Django(2) - Django模板Django
- Django-模板Django
- Django 模板層Django
- Django模板層Django
- Python 模板引擎Python
- FreeMarker模板引擎
- django的模板層Django
- Django——模板應用Django
- ejs模板引擎原理JS
- java模板引擎:velocityJava
- Thymeleaf(Java模板引擎)Java
- Django之mako模板使用Django
- PHPTAL模板引擎語法PHP
- Express 文件(使用模板引擎)Express
- 手擼 JavaScript 模板引擎JavaScript
- Java模板引擎之FreeMarkerJava
- Django的檢視和模板Django
- django-模板之標籤Django
- Tornado框架02-模板引擎框架
- Spring Boot實戰:模板引擎Spring Boot
- smarty模板引擎視訊教程
- Python全棧Web(Django框架、模板)Python全棧WebDjango框架
- django-模板層基礎2Django
- Django 模板標籤-第26篇Django
- PHP 模板引擎用到的核心方法PHP
- 如何選擇Web前端模板引擎?Web前端
- Express基礎瞭解—模板引擎Express
- Spring Boot (三)模板引擎FreeMarker整合Spring Boot
- 如何選擇 Web 前端模板引擎?Web前端
- Spring Boot (四)模板引擎Thymeleaf整合Spring Boot
- Flask 使用Jinja2模板引擎Flask
- gf框架之模板引擎 – 基本用法框架
- SpringBoot模板引擎簡單認知Spring Boot
- Ajax概述,封裝以及聯合模板引擎進行資料互動封裝
- django 模板語言的註釋操作Django
- Django中的模板渲染是什麼Django