# Django 2.0 文章集 [5] view 視圖 ###### tags: `Django`, `django2.0`, `python` - [ ] 完成 ORM(模型類) 的設計與設定後,可以來著手 view(視圖)了! - [ ] view 相當於一個 function,Django 中所有與程式邏輯有關的 code 皆坐落於此 - [ ] view 會將接收到的 HTTP request 做處理後,回傳適當的 HTTP response ## § 建立 views(視圖) #### 編輯 mysite/blog/views.py ``` from django.shortcuts import render, get_object_or_404 from model import Post def post_list(request): ### 利用之前自製的模型管理器取出 Post資料表 的全部記錄 all_posts = Post.published.all() return render(request, "blog/post/list.html", {"posts": all_posts}) ``` ### (程式碼解釋) - [ ] 先將資料庫中 Post 資料表的所有記錄取出並暫存到 all_posts - [ ] 再用 all_posts 填滿(padding) 所有 "list.html"模板中,取名叫 "posts" 的變數。此步驟亦可稱之渲染(render) 模板。 - [ ] P.S. 渲染完畢即可得內容完整的 html 檔,作為 HTTP response 回傳給使用者的 browser ## § 綁定 URL路徑 (與 view 的對應) ### (1) 先為應用程式(blog) 添加 URL 設定 #### mysite/blog/urls.py ### (2) 再為專案添加 URL 設定 #### 編輯 mysite/mysite/urls.py Q: 為何不全寫在專案 URL 設定的 .py 檔? A: - [ ] 當 app 很多的時候,每個 app 可能都有數個 views 需要各自的 url 對應。 - [ ] 若將分屬不同 app 的所有 view-url 對應都塞在 mysite/urls.py (專案的總 URL 設定區),很可能導致管理/查詢不易。 - [ ] 若採上述方式,每個 app 在總 URL 設定區只需一行, URL 路徑指向 app(附屬) 的 URL 設定區即可。 - [ ] 而每個 view-url 對應實際上是寫在 app 的 URL 設定區。這樣一來即便寫了很多 views 也比較容易處理!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up