星期日, 2月 26, 2017

Django - 模板使用方式

創建一個 demotmpl 專案

django-admin startproject demotmpl
cd demotmpl
python manage.py startapp tmpl
自動產生的目錄結構
demotmpl/
├── tmpl
│   ├── __init__.py
│   ├── admin.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── demotmpl
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

定義在此專案中新增了一個應用 APP

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
 
    'tmpl',
]
編輯 tmpl/views.py
from django.shortcuts import render
 
 
def home(request):
    return render(request, 'home.html')
在 tmpl 目錄下新建一個 templates 文件夾,裡面新建一個 home.html
mkdir templates
nano home.html
目錄結構
demotmpl
├── tmpl
│   ├── __init__.py
│   ├── admin.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── templates
│   │   └── home.html
│   ├── tests.py
│   └── views.py
├── manage.py
└── demotmpl
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
編輯 home.html

<html>
<head>
    <title>KT-Lollipop</title>
</head>
<body>
 這裡是 KT-Lollipop 線上學習課程網站
<br>
歡迎來學習 Django
</body>
</html>
編輯 demotmpl/urls.py
from django.conf.urls import include, url
from django.contrib import admin
from tmpl import views as tmpl_views
 
 
urlpatterns = [
    url(r'^$', tmpl_views.home, name='home'),
    url(r'^admin/', admin.site.urls),
]
運行,看結果
python manage.py runserver
模板補充知識:
網站模板的設計,一般的,我們做網站有一些通用的部分,比如導航,底部,訪問統計代碼等等
nav.html, bottom.html, weba_nalytics.html
可以寫一個base.html 來包含這些通用文件(include)



    {% block title %}標題{% endblock %} - KT Lollipop 線上學習課程網站


 
{% include 'nav.html' %}
 
{% block content %}
這裡是默認內容,所有繼承自這個模板的,如果不覆蓋就顯示這裡的默認內容。
{% endblock %} {% include 'bottom.html' %}
如果需要,寫足夠多的block以便繼承的模板可以重寫該部分,include是包含其它文件的內容,就是把一些網頁共用的部分拿出來,重複利用,改動的時候也方便一些,還可以把廣告代碼放在一個單獨的html中,改動也方便一些,在用到的地方include進去。其它的頁面繼承自base.html就好了,繼承後的模板也可以在block塊中include其它的模板文件。
比如我們的首頁home.html,繼承或者說擴展(extends)原來的base.html,可以簡單這樣寫,重寫部分代碼(默認值的那一部分不用改)
{% extends 'base.html' %}
 
{% block title %}歡迎光臨首頁{% endblock %}
 
{% block content %}
{% include 'ad.html' %}
這裡是首頁,歡迎光臨
{% endblock %}

0 意見 :

張貼留言

回覆意見時,麻煩輸入一下暱稱
(隨便取個名字也好~ ^_^)
好讓我方便回覆您的問題,
選擇「名稱/網址」輸入您的暱稱,
麻煩一下,謝謝大家。

關閉廣告 [X]