2019年11月30日 星期六

#mezzanine 免費主題flat試做其它page的view

flat這個免費主題首頁的view做成了之後,想來做其它page的view。
因為首頁有明顯的index.html,其它page的html檔案是怎麼一回事呢。

底下以thank身價不凡兩個page為例

  • 首先,觀察網址,不論是中文或是英文的page名稱,都會掛在網址後面。這個和django一樣,就是url的pattern
所以,在url.py中,加入pattern如下
    url(r"^thank/$", views.page, {"slug": "/thank"}, name="thank"),
    url(r"^身價不凡/$",views.page,{"slug":"/身價不凡"},name="身價不凡"),
  • 接著要編輯html檔
  1. 你可以新建一個同名的html,mezzanine會優先使用,但是就無法在admin中管理。
  2. 如果沒有同名的html,mezzanine一律使用pages\page.html來產生各page的html檔(使用者不會看到),你可以在admin中編輯,還可以在page.html中,加入新的元素,例如,接受自己的view傳來的變數。如下藍字是新插入的,由view傳來的變數。page.html中不可以加入文字,那樣會讓每一個page都出現,除非你就是想那樣。
{% block main %}
{{today}}{{arrivaltime}}
{% endblock %}

例一:建身價不凡.html(和page.html放在同一目錄)
<!doctype.html>
<html>
<head>
<title>
</title>
</head>
<body>
<img src="..\..\static\images\car.jpg" >
</body>
</html>
結果,已經不是原來的網頁了。當然你就可以自由的編輯,至於如何引入view,請往下看。
以下和例二相同,只是為了測試中文的url pattern是否可行。
  • 先把身價不凡.html移走,使用mezzanine的page。
  • 在url.py中加入路徑
url(r"^身價不凡/$",views.page,{"slug":"身價不凡"},name="身價不凡"),
  • 在page_processors.py中加入裝飾器
def welcome(request,page):
    hitime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+"  身價不凡"
   
    return locals()

  • 在page.html中加入裝飾器中的變數(藍字部份)(p.s.{{arrivaltime}}是例二中所使用,如果沒作用,就不會顯示)
{% block main %}
{{arrivaltime}}{{hitime}}
{% endblock %}

結果:原來的網頁開頭,加進了時間變數

例二:使用mezzanine內建的page,如上面說明中,在page.html插入藍字部份
{% block main %}
{{arrivaltime}}
{% endblock %}

page_processors.py中加入以下的view程式
from mezzanine.pages.page_processors import processor_for
import time
@processor_for("thank")
def welcome(request,page):
    arrivaltime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    return locals()

結果,星號的上方多了日期和時間。


沒有留言:

張貼留言