天天看點

python django web項目的建構步驟(二)

視圖的實作:

視圖是一個簡單的 Python 方法,它接受一個請求對象,負責實作:

任何業務邏輯(直接或間接)

上下文字典,它包含模闆資料

使用一個上下文來表示模闆

響應對象,它将所表示的結果傳回到這個架構中

在 Django 中,當一個 URL 被請求時,所調用的 Python 方法稱為一個視圖(view),這個視圖所加載并呈現的頁面稱為模闆(template)。由于這個原因,Django 小組将 Django 稱為一個 MVT(model-view-template)架構。另一方面,TurboGears 把自己的方法稱作控制器(controller),将所呈現的模闆稱為視圖(view),是以縮寫也是 MVC。其差別在于廣義的語義,因為它們所實作的内容是相同的。

1、首先我們可以簡單的來實作一下,就在myapp/views.py這個檔案中寫一個方法:

1

2

3

4

5

6

<code>[root@node3 myapp]</code><code># vim views.py</code>

<code>from django.shortcuts </code><code>import</code> <code>render</code>

<code>from django.http </code><code>import</code> <code>HttpResponse</code>

<code>def index(request):</code>

<code>    </code><code>return</code> <code>HttpResponse(</code><code>'Hello Word!'</code><code>)</code>

2、在mysite2中的urls.py中加入一條記錄:

<code>[root@node3 myapp]</code><code># vim ../mysite2/urls.py</code>

<code>url(r</code><code>'^myapp/$'</code><code>, </code><code>'myapp.views.index'</code><code>), </code><code># ^myapp/$ 這個可以随意寫,這個是在位址欄輸入的位址,但是後面的myapp.views.index就必須寫views.py中定義的方法。</code>

這個在url位址欄中就可以通路到Hello Word!了

<a href="http://s3.51cto.com/wyfs02/M02/6E/5B/wKioL1V6T6KSvg6uAAA935EPQcI222.jpg" target="_blank"></a>

########## 視圖-子產品-URL的關聯使用  ###########

1、在myapp檔案夾下編寫views.py

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>from django.template </code><code>import</code> <code>Context, loader</code>

<code>from myapp.models </code><code>import</code> <code>*</code>

<code>import</code> <code>json</code>

<code>def studentInfo(request):</code>

<code>    </code><code>ret = []</code>

<code>    </code><code>if</code> <code>request.method == </code><code>'GET'</code><code>:</code>

<code>        </code><code>student_list = Student.objects.all()</code>

<code>        </code><code>for</code> <code>student_info </code><code>in</code> <code>student_list:</code>

<code>            </code><code>ret.append(student_info)</code>

<code>    </code><code>return</code> <code>HttpResponse(ret)</code>

<code>def teacherInfo(request):</code>

<code>        </code><code>teacher_list = Teacher.objects.all()</code>

<code>        </code><code>for</code> <code>teacher_info </code><code>in</code> <code>teacher_list:</code>

<code>            </code><code>ret.append(teacher_info)</code>

2、在mysite2檔案夾下的url中添加下面兩條url記錄:

<code>url(r</code><code>'^studentinfo/$'</code><code>, </code><code>'myapp.views.studentInfo'</code><code>),</code>

<code>url(r</code><code>'^teacherinfo/$'</code><code>, </code><code>'myapp.views.teacherInfo'</code><code>),</code>

在頁面位址欄中就可以這樣檢視内容了:

10.17.1.151:8000/studentinfo/

--------------------------------------------------------------------------------

3、到這我們還沒添加模闆,這裡我們來添加一個模闆檔案夾,專門用來存放html頁面資訊的:

在項目目錄mysite2下添加模闆檔案夾templates,編寫模闆

<code>[root@node3 mysite2]</code><code># mkdir templates</code>

<code>[root@node3 mysite2]</code><code># cd templates</code>

<code>[root@node3 templates]</code><code># ll</code>

<code>total 4</code>

<code>-rw-r--r--. 1 root root 91 Jun 11 00:06 show_studentinfo.html</code>

<code>[root@node3 templates]</code><code># vim show_studentinfo.html</code>

<code>{% </code><code>for</code> <code>n </code><code>in</code> <code>student_list %}</code>

<code>&lt;div&gt;</code>

<code>    </code><code>&lt;h3&gt;`n`&lt;</code><code>/h3</code><code>&gt;</code>

<code>&lt;</code><code>/div</code><code>&gt;</code>

<code>{% endfor %}</code>

<code>`student_list`</code>

4、然後視圖改這以下内容:

<code>from django.shortcuts </code><code>import</code> <code>render, render_to_response</code>

<code>    </code><code>student_list = Student.objects.all()</code>

<code>    </code><code># show_studentinfo.html這裡寫模闆檔案夾裡面對應的html檔案名</code>

<code>    </code><code>return</code> <code>render_to_response(</code><code>'./show_studentinfo.html'</code><code>, {</code><code>'student_list'</code><code>:student_list})</code>

<code>    </code><code>teacher_list = Teacher.objects.all()</code>

<code>    </code><code>return</code> <code>render_to_response(</code><code>'./show_teacherinfo.html'</code><code>, {</code><code>'teacher_list'</code><code>:teacher_list})</code>

5、然後在mysite2的url檔案下添加一行url記錄:

<code>url(r</code><code>'^show_studentinfo/$'</code><code>, </code><code>'myapp.views.studentInfo'</code><code>),   </code><code># show_studentinfo這個是templates模闆檔案中的檔案名,但不用加.html</code>

<code>url(r</code><code>'^show_teacherinfo/$'</code><code>, </code><code>'myapp.views.teachertInfo'</code><code>),  </code><code># myapp.views.teachertInfo這個是views中定義的方法</code>

6、然後在位址欄中就可以通路得到了:

本文轉自 wei0164 51CTO部落格,原文連結:http://blog.51cto.com/tanxw/1661159,如需轉載請自行聯系原作者