Django快速開發可定制的辦公系統實戰(5):前端模板的使用

參考資料: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/

image

可以看到項目的模板和樣式文件都可以成功使用了。


安裝部署交流:83792608(QQ群)
更多歡迎關注:sandbox.im

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376