Django是一種基於Python開發網頁的架構
這篇文章主要就是針對MVC中的V做修改

還記得第一次用到MVC架構是在寫Android Studio時
當時只學了一學期Python、一學期Java
甚至還對寫程式有莫名的恐懼與厭惡
那個時候的我還沒有感受到架構的好
現在才體會到、想學各種架構
卻發現時間不夠用啊!

建立Views

  1. polls/views.py裡面設定函數

  2. 當calling這些url時應該回傳上面的views

舉例來說,以下分別輸入urls中設定的網址,會成功回傳在view.py裡函數所設定Response的內容
http://127.0.0.1:8000/polls/

http://127.0.0.1:8000/polls/5/

http://127.0.0.1:8000/polls/5/results/

http://127.0.0.1:8000/polls/5/vote/

  1. 在polls下建立一個名為templates的資料夾,接著在建立一個名為polls的資料夾,最後在裡面新增一個名為index.html的檔案。以及修改view.py讓index這個函數能夠呼叫我們所創的tmplate頁面

這邊也要記得import loader、models等,這邊是根據發布日期顯示我們在Django中內建的資料庫中的前五個Question

最後顯示出來的畫面:

  1. (較佳)或者我們可以將函數中的HttpResponse用render()取代,直接get template中的html

  2. 處理404 Error的畫面,使用到raise的觀念,如果網址中輸入的Question並不存在,就raise Http404這個畫面(記得import Http404),當然也可以使用自己設計404的頁面,但是就要另外做一些設定(點我
    另外記得新增detail.html,裡面可以先放,就可以先runserver跑看看有沒有成功了

    404的頁面

  3. 或者是使用get_object_or_404來處理404的畫面

    與使用ObjectDoesNotExist的方法出來的結果頁面稍微不同

  4. 修改detail.py,方法調用發生在{% for %}迴圈中

  5. 原本在index.html裡,我們為Question的連結網址做了下面這樣的設定

    1
    <li><a href="/polls//"></a></li>

    可以在url.py中看到我們為detail這個設的是<int:question_id>

但是如果今天我們的網址名稱不想用polls或是想在polls後再新增一個路徑
如:polls/specifics/5,此時我們就需在html裡面進行更動,當內容一多起來操作就會變得困難,因此我們將index.html以及urls.py
成下面這樣

1
<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>


  1. 但是由於一個Django專案裡可能會有很多個APP,此時url就會變得模糊
    因此我們為polls進行命名,在polls/urls.py新增一個APP_NAME

    同時index.html也要記得加上url的名稱