django book ch8 advanced views and urlconf

43
Django Book Chapter 8 Advanced Views and URLConfs 1379星期

Upload: shan-ho-yang

Post on 05-Dec-2014

2.471 views

Category:

Technology


4 download

DESCRIPTION

Taipei.py Django workshop

TRANSCRIPT

Page 1: Django Book ch8 Advanced Views and URLconf

Django BookChapter 8

Advanced Views and URLConfs

13年7月9⽇日星期⼆二

Page 2: Django Book ch8 Advanced Views and URLconf

關於我 About Me•網路上的ID: vrootic, Vic, Shan-Ho Yang, 楊善合

•研究生@師大資工

•使用Python兩年

•使用過的Python web framework: web.py, Flask

•正在學習Django

13年7月9⽇日星期⼆二

Page 3: Django Book ch8 Advanced Views and URLconf

13年7月9⽇日星期⼆二

Page 4: Django Book ch8 Advanced Views and URLconf

推廣

•使用中文做Python相關的投影片

•推廣Django web framework

13年7月9⽇日星期⼆二

Page 5: Django Book ch8 Advanced Views and URLconf

在進入重點部分之前...

13年7月9⽇日星期⼆二

Page 6: Django Book ch8 Advanced Views and URLconf

Review Ch3 複習• url.py裡面如何去指定一個頁面的view?正規表達式?

•如何關掉除錯模式(debug mode)?

• Django如何處理一個進來的Request?

• settings.py裡面ROOT_URLCONF用途是什麼?

13年7月9⽇日星期⼆二

Page 7: Django Book ch8 Advanced Views and URLconf

關於URLconf的那些小事

13年7月9⽇日星期⼆二

Page 8: Django Book ch8 Advanced Views and URLconf

相信大家都還記得...

13年7月9⽇日星期⼆二

Page 9: Django Book ch8 Advanced Views and URLconf

但是當頁面開始變多變複雜的時候...

13年7月9⽇日星期⼆二

Page 10: Django Book ch8 Advanced Views and URLconf

13年7月9⽇日星期⼆二

Page 11: Django Book ch8 Advanced Views and URLconf

十幾個頁面的時候還好,我可以一個一個慢慢import

13年7月9⽇日星期⼆二

Page 12: Django Book ch8 Advanced Views and URLconf

但是要是現在有八十個頁面呢?

13年7月9⽇日星期⼆二

Page 13: Django Book ch8 Advanced Views and URLconf

Django 提供的方式

13年7月9⽇日星期⼆二

Page 14: Django Book ch8 Advanced Views and URLconf

善用patterns()整合不同頁面

13年7月9⽇日星期⼆二

Page 15: Django Book ch8 Advanced Views and URLconf

在除錯模式下顯示某些頁面

13年7月9⽇日星期⼆二

Page 16: Django Book ch8 Advanced Views and URLconf

Python的小知識Keyword Argument & Positional Argument

13年7月9⽇日星期⼆二

Page 17: Django Book ch8 Advanced Views and URLconf

Named-groups & Non-Named groups

13年7月9⽇日星期⼆二

Page 18: Django Book ch8 Advanced Views and URLconf

目前的小結•如何處理越來越多的頁面?

• patterns()是可以串接不同種類的頁面

•可以引入django.conf.settings裡面的DEBUG去特別顯示某些頁面

•理解(?P<name>pattern)的意義

13年7月9⽇日星期⼆二

Page 19: Django Book ch8 Advanced Views and URLconf

抽象化頁面相同部分

13年7月9⽇日星期⼆二

Page 20: Django Book ch8 Advanced Views and URLconf

解法⼀一

13年7月9⽇日星期⼆二

Page 21: Django Book ch8 Advanced Views and URLconf

解法⼆二 (⽐比較好的解法)

13年7月9⽇日星期⼆二

Page 22: Django Book ch8 Advanced Views and URLconf

參數的優先權

13年7月9⽇日星期⼆二

Page 23: Django Book ch8 Advanced Views and URLconf

參數的優先權 cont.

•當url使用/mydata/2/或者是/mydata/12345/時會被覆蓋成/mydata/3/

•需要多注意一下這個優先權的事

13年7月9⽇日星期⼆二

Page 24: Django Book ch8 Advanced Views and URLconf

接下來是今天重點

13年7月9⽇日星期⼆二

Page 25: Django Book ch8 Advanced Views and URLconf

13年7月9⽇日星期⼆二

Page 26: Django Book ch8 Advanced Views and URLconf

別忘了URLconf教給我們的那些小事

13年7月9⽇日星期⼆二

Page 27: Django Book ch8 Advanced Views and URLconf

13年7月9⽇日星期⼆二

Page 28: Django Book ch8 Advanced Views and URLconf

休息⼀一下1..2..3..4....10

13年7月9⽇日星期⼆二

Page 29: Django Book ch8 Advanced Views and URLconf

URLconf其實告訴了我們許多事

13年7月9⽇日星期⼆二

Page 30: Django Book ch8 Advanced Views and URLconf

URLconf裡面有許許多多的技巧

13年7月9⽇日星期⼆二

Page 31: Django Book ch8 Advanced Views and URLconf

重點在於如何用最少的程式碼達到簡潔與

我們的要求

13年7月9⽇日星期⼆二

Page 32: Django Book ch8 Advanced Views and URLconf

接下來跟大家分享一下一些你我在做網站不可

不知道的XSS...

13年7月9⽇日星期⼆二

Page 33: Django Book ch8 Advanced Views and URLconf

好的URL不會造成XSS攻擊

但是壞的URL...?

13年7月9⽇日星期⼆二

Page 34: Django Book ch8 Advanced Views and URLconf

假設現在要從A頁連到B頁(例如A頁封面

頁/廣告頁)

13年7月9⽇日星期⼆二

Page 35: Django Book ch8 Advanced Views and URLconf

/page/A/5566,裡面的5566就是要給B頁的參數,理論上是整數

13年7月9⽇日星期⼆二

Page 36: Django Book ch8 Advanced Views and URLconf

# A.html<a href=”/page/b#{params[:id]}”> Process to page B</a>

13年7月9⽇日星期⼆二

Page 37: Django Book ch8 Advanced Views and URLconf

<a href=”/page/b/”> <script>alert(‘xss’)</script></a>

13年7月9⽇日星期⼆二

Page 38: Django Book ch8 Advanced Views and URLconf

<a href=””> <script>alert(‘xss’)</script> Process to page B</a>

13年7月9⽇日星期⼆二

Page 39: Django Book ch8 Advanced Views and URLconf

接下來就會跳窗窗囉~

13年7月9⽇日星期⼆二

Page 40: Django Book ch8 Advanced Views and URLconf

為什麼?因為太過寬容的regexp (/(^page)/(.*))

13年7月9⽇日星期⼆二

Page 41: Django Book ch8 Advanced Views and URLconf

小心使用你的Regexp來指定URL

13年7月9⽇日星期⼆二

Page 42: Django Book ch8 Advanced Views and URLconf

Q & A

13年7月9⽇日星期⼆二

Page 43: Django Book ch8 Advanced Views and URLconf

謝謝各位

13年7月9⽇日星期⼆二