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,Contextdef 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,Contextdef 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,Contextdef getTime():#獲取當前時間import timereturn time.ctime()def getCount():#獲取訪問次數countfile  = open('count.dat','a+')#以讀寫形式打開文件counttext = countfile.read()   try:count = int(counttext)+1except:count = 1    countfile.seek(0)countfile.truncate()#清空文件countfile.write(str(count))#重新寫入新的訪問量
    countfile.flush()countfile.close()return countdef 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、總結

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

轉載于:https://www.cnblogs.com/fengfenggirl/archive/2013/05/22/django_template_viste_count.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378343.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

strictmath_Java StrictMath log10()方法與示例

strictmathStrictMath類log10()方法 (StrictMath Class log10() method) log10() method is available in java.lang package. log10()方法在java.lang包中可用。 log10() method is used to return the logarithm of the given (base 10) of the given argument in the method…

30、深入理解計算機系統筆記,并發編程(concurrent)(2)

1、共享變量 1&#xff09;線程存儲模型 線程由內核自動調度&#xff0c;每個線程都有它自己的線程上下文&#xff08;thread context&#xff09;&#xff0c;包括一個惟一的整數線程ID&#xff08;Thread ID,TID&#xff09;&#xff0c;棧&#xff0c;棧指針&#xff0c;程序…

PostgreSQL在何處處理 sql查詢之十三

繼續&#xff1a; /*--------------------* grouping_planner* Perform planning steps related to grouping, aggregation, etc.* This primarily means adding top-level processing to the basic* query plan produced by query_planner.** tuple_fraction i…

【視覺項目】基于梯度的NCC模板匹配代碼以及效果

文章目錄流程分析工程代碼【1】NCC代碼【Ⅰ】sttPxGrdnt結構體【Ⅱ】sttTemplateModel模板結構體【Ⅲ】calcAccNCC計算ncc系數函數【Ⅳ】searchNcc NCC模板匹配函數【Ⅴ】searchSecondNcc 二級搜索&#xff1a;在某一特定點周圍再以步進為1搜索【2】測試圖轉外輪廓【Ⅰ】孔洞填…

第七章 再談抽象

第七章 再談抽象 對象魔法 多態&#xff1a;可對不同類型的對象執行相同的操作&#xff0c;而這些操作就像“被施了魔法”一樣能夠正常運行。(即&#xff1a;無需知道對象的內部細節就可使用它)&#xff08;無需知道對象所屬的類&#xff08;對象的類型&#xff09;就能調用其…

c語言math乘法,JavaScript用Math.imul()方法進行整數相乘

1. 基本概念Math.imul()方法用于計算兩個32位整數的乘積&#xff0c;它的結果也是32位的整數。JavaScript的Number類型同時包含了整數和浮點數&#xff0c;它沒有專門的整型和浮點型。因此&#xff0c;Math.imul()方法能提供類似C語言的整數相乘的功能。我們將Math.imul()方法的…

java scanner_Java Scanner nextLong()方法與示例

java scanner掃描器類的nextLong()方法 (Scanner Class nextLong() method) Syntax: 句法&#xff1a; public long nextLong();public long nextLong(int rad);nextLong() method is available in java.util package. nextLong()方法在java.util包中可用。 nextLong() method…

技術總監和CTO的區別 淺談CTO的作用----軟件公司如何開源節流(一)

我一直在思考軟件公司如何開源節流。當然&#xff0c;老板也在思考開源節流。當然&#xff0c;老板思考的開源節流在公司運營層面上&#xff0c;而我作為CTO&#xff0c;我考慮的則是在產品運營角度上來思考這個問題。否則&#xff0c;一個軟件公司&#xff0c;它的生存與發展就…

梯度下降法預測波士頓房價以及簡單的模型評估

目錄原理代碼關于歸一化的思考原理 觀察數據可知屬性之間差距很大&#xff0c;為了平衡所有的屬性對模型參數的影響&#xff0c;首先進行歸一化處理。 每一行是一個記錄&#xff0c;每一列是個屬性&#xff0c;所以對每一列進行歸一化。 二維數組歸一化&#xff1a;1、循環方式…

Windows Phone 內容滑動切換實現

在新聞類的APP中&#xff0c;有一個經常使用的場景&#xff1a;左右滑動屏幕來切換上一條或下一條新聞。 那么通常我們該使用哪種方式去實現呢&#xff1f;可以參考一下Demo的實現步驟。 1&#xff0c;添加Windows Phone用戶自定義控件。例如&#xff1a; 這里我為了演示的方便…

c語言interrupt函數,中斷處理函數數組interrupt[]初始化

在系統初始化期間&#xff0c;trap_init()函數將對中斷描述符表IDT進行第二次初始化(第一次只是建一張IDT表&#xff0c;讓其指向ignore_intr函數)&#xff0c;而在這次初始化期間&#xff0c;系統的0~19號中斷(用于分NMI和異常的中斷向量)均被設置好。與此同時&#xff0c;用于…

bytevalue_Java Number byteValue()方法與示例

bytevalueNumber類byteValue()方法 (Number Class byteValue() method) byteValue() method is available in java.lang package. byteValue()方法在java.lang包中可用。 byteValue() method is used to return the value denoted by this Number object converted to type byt…

第二章 染色熱力學理論單元測驗

1,()測定是染色熱力學性能研究的基礎 吸附等溫線。 2,吸附是放熱反應,溫度升高,親和力() 減小 3,染色系統中包括() 染料。 染深色介質。 染色助劑。 纖維。 4,下列對狀態函數特點敘述正確的為() 狀態函數只有在平衡狀態的系統中才有確定值。 在非平衡狀態的系統…

使用鳶尾花數據集實現一元邏輯回歸、多分類問題

目錄鳶尾花數據集邏輯回歸原理【1】從線性回歸到廣義線性回歸【2】邏輯回歸【3】損失函數【4】總結TensorFlow實現一元邏輯回歸多分類問題原理獨熱編碼多分類的模型參數損失函數CCETensorFlow實現多分類問題獨熱編碼計算準確率計算交叉熵損失函數使用花瓣長度、花瓣寬度將三種鳶…

開源HTML5應用開發框架 - iio Engine

隨著HTML5的發展&#xff0c;越來越多的基于HTML5技術的網頁開發框架出現&#xff0c;在今天的這篇文章中&#xff0c;我們將介紹iio Engine&#xff0c;它是一款開源的創建HTML5應用的web框架。整個框架非常的輕量級&#xff0c;只有45kb大小&#xff0c;并且整合了debug系統&…

c語言double root,C語言修仙

root(1)(2/2)AD1AD4林潯合理推測&#xff0c;青城山劍宗&#xff0c;也就是祁云所在的劍修一脈&#xff0c;掌握著一些道修并不知道的傳承。譬如——怎樣找到赤霄龍雀劍&#xff0c;又或者&#xff0c;怎樣使用它。這樣一來&#xff0c;青城的守衛陣法沒有反應也能解釋了&#…

【轉】Black Box

Introduction BlackBox是FPGA設計中一個重要的技巧&#xff0c;不過覺得Xilinx的文檔沒有很好地將它講清楚。 BlackBox的主要想法就是把設計的某一個子模塊單獨綜合&#xff0c;綜合的結果作為一個黑盒子子模塊&#xff0c;上層設計不再對這個模塊進行優化&#xff0c;只能看到…

Java Compiler disable()方法與示例

編譯器類disable()方法 (Compiler Class disable() method) disable() method is available in java.lang package. disable()方法在java.lang包中可用。 disable() method is used to cause the compiler to stop operation. disable()方法用于使編譯器停止操作。 disable() m…

【神經網絡計算】——神經網絡實現鳶尾花分類

本blog為觀看MOOC視頻與網易云課堂所做的筆記 課堂鏈接&#xff1a; 人工智能實踐:TensorFlow筆記 吳恩達機器學習 疑問與思考 為什么按照batch喂入數據 之前看的視頻里面處理數據都是一次性將所有數據喂入&#xff0c;現在看的這個視頻對數據進行了分組投入。這是為何&#…

第三章 染色動力學理論單元測試

1,準二級動力學模型認為,染色速率與()的二次方成正比 纖維上未被占滿的位置(空位)數量 2,研究染色動力學的意義有() 了解染料走向平衡的速率。 初染速率。 勻染性。 3,求出染料的擴散系數的意義有() 了解各因素對擴散系數的影響。 求出不同溫度下的擴散系數,計算…