參考資料:https://docs.djangoproject.com/en/1.11/
1 Django基礎模板語言:
作為Web 框架,Django 提供了便利的方法以動態地生成HTML。最常見的做法是使用模板。模板包含所需HTML 輸出的靜態部分,以及一些特殊的語法,描述如何將動態內容插入。
模板:
模板是純文本文件。模板中通常會包含可以被數值替換的變量,和控制模板邏輯的標簽
例如下面一個簡單模板示例,其中包含了模板繼承,變量使用,邏輯循環等
{% extends "base_generic.html" %}
{% block title %}{{ section.title }}{% endblock %}
{% block content %}
<h1>{{ section.title }}</h1>
{% for story in story_list %}
<h2>
<a href="{{ story.get_absolute_url }}">
{{ story.headline|upper }}
</a>
</h2>
<p>{{ story.tease|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}
變量:
變量包含在{{}}內,上面例子中,{{ section.title }}就是一個變量,它最終會被后臺傳遞過來的數值替換,需要注意的是變量的名稱可以包含任意字母數字和下劃線,點"."在變量中是由特殊含義的。
過濾器:
我們可以通過過濾器來改變變量的顯示,例如:如果一個變量是false或者為空,我們可以通過過濾器給定一個默認值:
{{ value|default:"nothing" }}
標簽:
一些標簽需要指定開始和結束標簽,例如:{% if %} ....{% endif %}
常用的還有 block和extends,這兩個標簽主要用于模板繼承,需要注意的是:{% extends %} 標簽用于模板繼承,它必須是模版中的第一個標簽。更多標簽功能的使用我將會在項目中學習。
2 項目實現
注意: 當前使用的項目源碼是從 tag v1.0生成的dev分支(參考3節 克隆項目和目錄結構介紹)
接下來介紹項目使用的模板結構
2.1 使用pycharm運行我們的項目
打開pycharm 選擇 File→Open 在彈窗中找得到sandboxOA項目,點OK,打開項目
-
依次選擇File→Settings→Project:sandboxOA→Project Interpreter設置項目運行環境,指向前面章節創建的虛擬環境
image
2.2 項目中的模板介紹
模板目錄結構:
項目模板存放在根目錄下的 templates目錄下,tag v1.0包含的模板頁如下
|-- templates/ # 用來存放模板文件(html)
|-- base-layer.html # 項目中彈窗頁面需要繼承基礎模板頁
|-- base-left.html # 左側導航
|-- base-static.html # 靜態文件頁面,包含全局的css和javascripts
|-- head-footer.html # 頭部導航和底部版權信息
|-- index.html # 初始頁面,后面項目會多次基于這個頁面進行功能布局
|-- page404.html # 404頁面
模板繼承關系:
base-static.html → head-footer.html → base-left.html → index.html
2.3 模板和靜態文件配置
模板:
我們創建了templates用來存放模板頁面,要想讓Django能夠順利找到模板,還需要再settings.py配置TEMPLATES,加入:'DIRS': [os.path.join(BASE_DIR, 'templates')] 來指定一個查找模板的目錄列表。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'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',
],
},
},
]
靜態文件:
網站中用到的圖片、JavaScript和CSS這些統稱為靜態文件,Django提供了django.contrib.staticfile來幫助我們管理它們。
我們在項目根目錄下創建了一個static目錄用來存放靜態文件,要想使用它還需要做如下配置:
- 確認settings.py中 INSTALLED_APPS下包含:django.contrib.staticfiles(默認已經添加)
- 在settings.py中添加 STATIC_URL = '/static/'
- 在settings.py中指定靜態文件目錄 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
完成以上配置,就可以在模板中引入靜態文件了,模板引入靜態文件配置:
{% load staticfiles %}
<html>
<head>
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
..............................
2.4 讓項目跑起來
完成了模板和靜態文件的配置,Django是否可以正常使用模板和靜態文件呢?我們來測試一下,打開根目錄下sandboxOA/urls.py,加入如下配置:
from django.conf.urls import url
from django.contrib import admin
from django.views.generic import TemplateView
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^test/', TemplateView.as_view(template_name='index.html')),
]
通過pycharm運行項目后,在瀏覽器中訪問:http://127.0.0.1:8000/test/
可以看到項目的模板和樣式文件都可以成功使用了。
- 開源項目:
- 輕量級辦公管理系統(乙方流程版)
- 輕量級辦公管理系統(甲方定制版,本記錄同步項目)
安裝部署交流:83792608(QQ群)
更多歡迎關注:sandbox.im