django第二個項目--使用模板做一個站點訪問計數器


上一節講述了django和第一個項目HelloWorld,這節我們講述如何使用模板,並做一個簡單的站點訪問計數器。

1、建立模板

  在myblog模塊文件夾(即包含__init__.py的文件夾)下面新建一個文件夾templates,用於存放HTML模板,在templates下建立一個index.html

<html>
<body>

<h1>Welcome</h1>

<p>Learning Python and Django Here!</p>
</body>
</html>

2、制定模板路徑

  修改myblog模塊文件夾的setting.py,將我們之前新建的模板文件夾路徑添加到進去,注意元組只有一個元素時要添加一個逗號","

TEMPLATE_DIRS = (
    'myblog/templates',)

3、導入模塊

  修改我們之前HelloWorld項目里面的views.py,將模板導入,並設置一個上下文:

#!-*-encoding:utf-8-*-
from django.http import HttpResponse
from django.template import loader,Context

def myHelloWorld(request):
    t = loader.get_template("index.html")#導入模板
    para ={}#上下文參數
    c = Context(para)#上下文
    return HttpResponse(t.render(c))

4、查看模塊是否導入成功

  切換到manage.py所在目錄

python manage.py runserver

  在瀏覽器中打開http://127.0.0.1:8000/Hello/,如果沒有出現錯誤的話,應該看到原來的Hello my django 已經變為我們index.html定義的布局

5、使用模板變量進行交互

  修改我們的模板index.html,設置連個模板變量,title和welcome:

<html>
<body>
<title>{{title}}</title>
<h1>{{wlecome}}</h1>

<p>Learning Python and Django Here!</p>
</body>
</html>

6、在view中使用模板變量

  修改我們的views.py,以字典的格式將上下文參數設置為para = {"title":"MyBlog","welcome":"歡迎"},其中鍵是模板中的變量名,值是我們希望顯示的值:

#!-*-encoding:utf-8-*-
from django.http import HttpResponse
from django.template import loader,Context

def myHelloWorld(request):
    t = loader.get_template("index.html")#導入模板
    para = {"title":"MyBlog","welcome":"歡迎"}#上下文參數
    c = Context(para)#上下文
    return HttpResponse(t.render(c))

  模板變量的值可以是字典,字符串,列表,對象,函數,具體看django的template文檔

7、查看模板變量是否起作用

  如果剛剛的runserver沒有關閉,那么服務器就一直還開着,如果管了,重新啟動一次,在瀏覽器刷新http://127.0.0.1:8000/Hello/

  我們會看到,設置的title變為了"MyBlog",welcome變成了"歡迎",說明模板變量起作用了

8、設置站點訪問計數器

  先修改index.html如下:

<html>
<body>
<title>{{title}}</title>

<h1>{{welcome}}</h1>

<p>Learning Python and Django Here!</p>
<li>{{content}}</li>
<p></p>
<li>您是第{{count}}個訪問本站的朋友</li>
<li>訪問時間:{{time}}</li>
</body>
</html>

  現在我們的模板中有了5個模板變量。

  我們利用一個文件保存已經訪問過本站點的次數,修改views.py如下:

#!-*-encoding:utf-8-*-
from django.http import HttpResponse
from django.template import loader,Context

def getTime():#獲取當前時間
    import time
    return time.ctime()

def getCount():#獲取訪問次數
    countfile  = open('count.dat','a+')#以讀寫形式打開文件
    counttext = countfile.read()   
    try:
        count = int(counttext)+1
    except:
        count = 1    
    countfile.seek(0)
    countfile.truncate()#清空文件
    countfile.write(str(count))#重新寫入新的訪問量
    countfile.flush()
    countfile.close()
    return count

def myHelloWorld(request):
    t = loader.get_template("index.html")#導入模板    
    time = getTime()
    count = getCount()
    para = {"title":"MyBlog",'welcome':"歡迎","content":"今天我們學習如何制作一個訪問站點計數器","count":count,"time":time}
    c = Context(para)#上下文
    return HttpResponse(t.render(c))

  這里面主要添加了兩個方法,一個用於獲取當前時間,另一個用於獲取訪問次數。

9、測試我們的站點計數器

  在測試之前我們對URL路徑做一個小的修改,將Hello路徑換成index路徑,這樣看書去跟第一個項目有區別些。

 url(r'^index/$',myHelloWorld)

  在瀏覽器其中刷新http://127.0.0.1:8000/Hello/將會看到404 not found

  

  換成http://127.0.0.1:8000/index/后,我們的站點訪問計數器就工作了:

  

  不斷的刷新瀏覽器,你會看到訪問次數在增加...

  如果這里出現錯誤,看錯誤提示,很可能是亂碼錯誤:

  

  這是因為我們的py文件設置的utf-8格式,而HTML文件用的GBK格式,你可以用NotePad++等編輯器編輯一下html文件的格式,設置為utf-8格式就好了

10、總結

  這一節我們學會了,使用模板和模板變量,當然這里只是一點皮毛,但對我們理解模板有着啟蒙的作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM