django book ch8 advanced views and urlconf
DESCRIPTION
Taipei.py Django workshopTRANSCRIPT
Django BookChapter 8
Advanced Views and URLConfs
13年7月9⽇日星期⼆二
關於我 About Me•網路上的ID: vrootic, Vic, Shan-Ho Yang, 楊善合
•研究生@師大資工
•使用Python兩年
•使用過的Python web framework: web.py, Flask
•正在學習Django
13年7月9⽇日星期⼆二
13年7月9⽇日星期⼆二
推廣
•使用中文做Python相關的投影片
•推廣Django web framework
13年7月9⽇日星期⼆二
在進入重點部分之前...
13年7月9⽇日星期⼆二
Review Ch3 複習• url.py裡面如何去指定一個頁面的view?正規表達式?
•如何關掉除錯模式(debug mode)?
• Django如何處理一個進來的Request?
• settings.py裡面ROOT_URLCONF用途是什麼?
13年7月9⽇日星期⼆二
關於URLconf的那些小事
13年7月9⽇日星期⼆二
相信大家都還記得...
13年7月9⽇日星期⼆二
但是當頁面開始變多變複雜的時候...
13年7月9⽇日星期⼆二
13年7月9⽇日星期⼆二
十幾個頁面的時候還好,我可以一個一個慢慢import
13年7月9⽇日星期⼆二
但是要是現在有八十個頁面呢?
13年7月9⽇日星期⼆二
Django 提供的方式
13年7月9⽇日星期⼆二
善用patterns()整合不同頁面
13年7月9⽇日星期⼆二
在除錯模式下顯示某些頁面
13年7月9⽇日星期⼆二
Python的小知識Keyword Argument & Positional Argument
13年7月9⽇日星期⼆二
Named-groups & Non-Named groups
13年7月9⽇日星期⼆二
目前的小結•如何處理越來越多的頁面?
• patterns()是可以串接不同種類的頁面
•可以引入django.conf.settings裡面的DEBUG去特別顯示某些頁面
•理解(?P<name>pattern)的意義
13年7月9⽇日星期⼆二
抽象化頁面相同部分
13年7月9⽇日星期⼆二
解法⼀一
13年7月9⽇日星期⼆二
解法⼆二 (⽐比較好的解法)
13年7月9⽇日星期⼆二
參數的優先權
13年7月9⽇日星期⼆二
參數的優先權 cont.
•當url使用/mydata/2/或者是/mydata/12345/時會被覆蓋成/mydata/3/
•需要多注意一下這個優先權的事
13年7月9⽇日星期⼆二
接下來是今天重點
13年7月9⽇日星期⼆二
13年7月9⽇日星期⼆二
別忘了URLconf教給我們的那些小事
13年7月9⽇日星期⼆二
13年7月9⽇日星期⼆二
休息⼀一下1..2..3..4....10
13年7月9⽇日星期⼆二
URLconf其實告訴了我們許多事
13年7月9⽇日星期⼆二
URLconf裡面有許許多多的技巧
13年7月9⽇日星期⼆二
重點在於如何用最少的程式碼達到簡潔與
我們的要求
13年7月9⽇日星期⼆二
接下來跟大家分享一下一些你我在做網站不可
不知道的XSS...
13年7月9⽇日星期⼆二
好的URL不會造成XSS攻擊
但是壞的URL...?
13年7月9⽇日星期⼆二
假設現在要從A頁連到B頁(例如A頁封面
頁/廣告頁)
13年7月9⽇日星期⼆二
/page/A/5566,裡面的5566就是要給B頁的參數,理論上是整數
13年7月9⽇日星期⼆二
# A.html<a href=”/page/b#{params[:id]}”> Process to page B</a>
13年7月9⽇日星期⼆二
<a href=”/page/b/”> <script>alert(‘xss’)</script></a>
13年7月9⽇日星期⼆二
<a href=””> <script>alert(‘xss’)</script> Process to page B</a>
13年7月9⽇日星期⼆二
接下來就會跳窗窗囉~
13年7月9⽇日星期⼆二
為什麼?因為太過寬容的regexp (/(^page)/(.*))
13年7月9⽇日星期⼆二
小心使用你的Regexp來指定URL
13年7月9⽇日星期⼆二
Q & A
13年7月9⽇日星期⼆二
謝謝各位
13年7月9⽇日星期⼆二