SlideShare a Scribd company logo
1 of 116
Download to read offline
Speed up your Web
Development
Ushering in 2012
Speaker : Spin Lai
Date : 2012/1/10
2012年1月10日星期二
Time breakdown of modern
web development
2012年1月10日星期二
40%
Trying to get the bastard to work in
Internet fu*king Explorer
2012年1月10日星期二
15%
Swearing
2012年1月10日星期二
20%
Trying to get the layout to work using
only CSS before giving up and using table
2012年1月10日星期二
10%
Making the site W3C comliant
2012年1月10日星期二
10%
Wishing a slow, painful death on Bill Gat*s
2012年1月10日星期二
5%
Actually coding/design
2012年1月10日星期二
Can somebody help us,
Please ?
2012年1月10日星期二
Can somebody help us,
Of course!
2012年1月10日星期二
ZenCoding
SASS/Compass
Dojo
2012年1月10日星期二
ZenCoding
2012年1月10日星期二
ZenCoding
2012年1月10日星期二
What is ZenCoding ?
2012年1月10日星期二
What is ZenCoding ?
Get HTML
done faster !
2012年1月10日星期二
But I have code snippet
plugins for my IDE.
2012年1月10日星期二
Cross-platform
Cross-editor
CSS-like syntax
ZenCoding is ...
2012年1月10日星期二
It works with ...
2012年1月10日星期二
<textarea>
2012年1月10日星期二
And how ?
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<div id="content">
</div>
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<div id="content">
</div>
div#content
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<div id="content">
</div>
div#content
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<ul id="navigation">
<li></li>
<li></li>
<li></li>
</ul>
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<ul id="navigation">
<li></li>
<li></li>
<li></li>
</ul>
ul#navigation>li*3
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<ul id="navigation">
<li></li>
<li></li>
<li></li>
</ul>
ul#navigation>li*3
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<select id="jazz" name="" class="album">
<option value=""></option>
<option value=""></option>
</select>
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
select#jazz.album>option*2
<select id="jazz" name="" class="album">
<option value=""></option>
<option value=""></option>
</select>
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
select#jazz.album>option*2
<select id="jazz" name="" class="album">
<option value=""></option>
<option value=""></option>
</select>
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<div id="thediv">
<p class="first"></p>
<p class="second"></p>
</div>
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<div id="thediv">
<p class="first"></p>
<p class="second"></p>
</div>
div#thediv>p.first+p.second
2012年1月10日星期二
HTML[ ]
[ ]Zen Code
<div id="thediv">
<p class="first"></p>
<p class="second"></p>
</div>
div#thediv>p.first+p.second
2012年1月10日星期二
DEMO
2012年1月10日星期二
SASS/Compass
2012年1月10日星期二
CSS/SASS/Compass
2012年1月10日星期二
尛
2012年1月10日星期二
2012年1月10日星期二
CSS / SASS / Compass
2012年1月10日星期二
CSS / SASS / Compass
2012年1月10日星期二
Everything is much easier
2012年1月10日星期二
Everything is much easier
in the
beginning...
2012年1月10日星期二
body {
margin: 0;
padding: 0;
background-color: #D1E7FF;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
div#main {
margin: 0 2em 0 2em;
padding: 0;
background: #FFF;
}
div#footer {
margin: 0 3em;
padding: 0.5em 0;
background: #FFF;
height: 64px;
background-image: url('images/inex_06.jpg');
}
2012年1月10日星期二
2012年1月10日星期二
When the project grows up...
2012年1月10日星期二
table#tb_product_grid {width: 100%;}
table#tb_product_grid td {margin: 0;padding: 0; text-align: center;}
table#tb_product_grid img{width: 350px;}
table#tb_LT_realtime th.y_desc {border-right: 1px solid #999; border-bottom: 1px solid #999;
background: #5A042C; color: #FFF; width: 22%;}
table#tb_LT_realtime th.x_var {background: #E7E5E5; width: 13%;}
table#tb_LT_realtime th.y_var {border: 1px solid #DDD;
padding: 0.25em 1.5em 0.25em 0;
text-align: right;}
.formbutton04{
cursor:pointer;
border:outset 1px #ccc;
background:#999;
color:#000;
font-family:Verdana,sans-serif;
font-weight:bold;
padding: 1px 2px;
background:url(images/formbg04.gif) repeat-x left top;
}
.btn3_mouseout {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px;
BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px;
FONT-SIZE: 12px; FILTER:
progid:DXImageTransform.Microsoft.Gradient
(GradientType=0, StartColorStr=#ffffff,
EndColorStr=#C3DAF5); BORDER-LEFT: #2C59AA 1px
solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px;
BORDER-BOTTOM: #2C59AA 1px solid
}
.btn3_mouseover {
BORDER-RIGHT: #2C59AA 1px solid; PADDING-RIGHT: 2px;
BORDER-TOP: #2C59AA 1px solid; PADDING-LEFT: 2px;
FONT-SIZE: 12px; FILTER:
progid:DXImageTransform.Microsoft.Gradient
(GradientType=0, StartColorStr=#ffffff,
EndColorStr=#D7E7FA); BORDER-LEFT: #2C59AA 1px
solid; CURSOR: hand; COLOR: black; PADDING-TOP: 2px;
BORDER-BOTTOM: #2C59AA 1px solid
}
iv#display_img{
text-align: center;
margin: 0 0 0 2.5em;
width: 1000px;
}
div#img_name{
width: 1000px;
height:20px;
font-size: large;
text-align: center;
}
div#img_list_name{
padding:2px;
font-size: large;
height: 20px;
text-align: center;
width: 1000px;
}
div#down_gif{
margin: 0.5em 0 0 2.5em;
width:1000px;
/* height:20px; */
text-align:right;
cursor: pointer;
}
.ui-tabs { padding: .2em; zoom: 1; }.ui-tabs .ui-tabs-nav { list-style: none; position:relative; padding: .2em .2em 0; }.ui-tabs .ui-tabs-nav li { position: relative;float: left; border-bottom-width: 0 !important;margin: 0 .2em -1px 0; padding: 0; }.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }.ui-tabs .ui-tabs-nav li.ui-tabs-selected{ padding-bottom: 1px; border-bottom-width: 0; }.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a{ cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{ cursor: pointer; } /* first selector in groupseems obsolete, but required to overcome bug inOpera applying cursor: text overall if definedelsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em;display: block; border-width: 0; background:none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
div.sitemap_layer_1{
border: 1px solid #B5D9EA;
margin: 0.5em 0 0 28px;
background: #D9F1FC;
padding: 0.25em 1em 0.25em 1em;
display: inline-block;
*display: inline; /
* This is for IE6 */
zoom: 1; /
* This is for inline-block in IE */
*display: inline !important; /
* This is for IE7 */
}
2012年1月10日星期二
2012年1月10日星期二
2012年1月10日星期二
2012年1月10日星期二
CSS / SASS / Compass
2012年1月10日星期二
SASS is ...
2012年1月10日星期二
NOT SuperASS
SASS is ...
2012年1月10日星期二
NOT SuperASS
Syntatically Awsome StyleSheet
SASS is ...
2012年1月10日星期二
NOT SuperASS
Syntatically Awsome StyleSheet
SASS v3 is known as SCSS
SASS is ...
2012年1月10日星期二
Okay, but what can she do?
2012年1月10日星期二
Nesting
Variable
Mixins
Inheritance
and so on...
2012年1月10日星期二
Nesting
Variable
Mixins
Inheritance
and so on...
2012年1月10日星期二
[ CSS ] [ SCSS ]
#header {
margin-bottom: 50px;
}
#header h1 {
font-size: 24px;
color: red;
}
#header h1 a {
display: block;
}
#header ul.nav li {
float: left;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
#header {
margin-bottom: 50px;
}
#header h1 {
font-size: 24px;
color: red;
}
#header h1 a {
display: block;
}
#header ul.nav li {
float: left;
}
#header {
margin-bottom: 50px;
h1 {
font-size: 24px;
color: red;
a { display: block; }
}
ul.nav {
li { float:left; }
}
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
#header {
margin-bottom: 50px;
}
#header h1 {
font-size: 24px;
color: red;
}
#header h1 a {
display: block;
}
#header ul.nav li {
float: left;
}
#header {
margin-bottom: 50px;
h1 {
font-size: 24px;
color: red;
a { display: block; }
}
ul.nav {
li { float:left; }
}
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
#header {
margin-bottom: 50px;
}
#header h1 {
font-size: 24px;
color: red;
}
#header h1 a {
display: block;
}
#header ul.nav li {
float: left;
}
#header {
margin-bottom: 50px;
h1 {
font-size: 24px;
color: red;
a { display: block; }
}
ul.nav {
li { float:left; }
}
}
2012年1月10日星期二
[ CSS ]
#header {
margin-bottom: 50px;
}
#header h1 {
font-size: 24px;
color: red;
}
#header h1 a {
display: block;
}
#header ul.nav li {
float: left;
}
#header {
margin-bottom: 50px;
h1 {
font-size: 24px;
color: red;
a { display: block; }
}
ul.nav {
li { float:left; }
}
}
[ SCSS ]
2012年1月10日星期二
Nesting
Variable
Mixins
Inheritance
and so on...
2012年1月10日星期二
[ CSS ] [ SCSS ]
a, h1, h2, h3, h4, h5 {
color: #ff9900;
}
#header {
background: #ff9900;
}
.section {
padding: 10px;
margin-bottom: 20px;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
a, h1, h2, h3, h4, h5 {
color: #ff9900;
}
#header {
background: #ff9900;
}
.section {
padding: 10px;
margin-bottom: 20px;
}
$LINK_COLOR: #FF9900;
$MARGIN: 20px;
a, h1, h2, h3, h4, h5 {
color: $LINK_COLOR;
}
#header {
background: $LINK_COLOR;
}
.section {
padding: $MARGIN / 2;
margin-bottom: $MARGIN;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
a, h1, h2, h3, h4, h5 {
color: #ff9900;
}
#header {
background: #ff9900;
}
.section {
padding: 10px;
margin-bottom: 20px;
}
$LINK_COLOR: #FF9900;
$MARGIN: 20px;
a, h1, h2, h3, h4, h5 {
color: $LINK_COLOR;
}
#header {
background: $LINK_COLOR;
}
.section {
padding: $MARGIN / 2;
margin-bottom: $MARGIN;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
a, h1, h2, h3, h4, h5 {
color: #ff9900;
}
#header {
background: #ff9900;
}
.section {
padding: 10px;
margin-bottom: 20px;
}
$LINK_COLOR: #FF9900;
$MARGIN: 20px;
a, h1, h2, h3, h4, h5 {
color: $LINK_COLOR;
}
#header {
background: $LINK_COLOR;
}
.section {
padding: $MARGIN / 2;
margin-bottom: $MARGIN;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
a, h1, h2, h3, h4, h5 {
color: #ff9900;
}
#header {
background: #ff9900;
}
.section {
padding: 10px;
margin-bottom: 20px;
}
$LINK_COLOR: #FF9900;
$MARGIN: 20px;
a, h1, h2, h3, h4, h5 {
color: $LINK_COLOR;
}
#header {
background: $LINK_COLOR;
}
.section {
padding: $MARGIN / 2;
margin-bottom: $MARGIN;
}
2012年1月10日星期二
Nesting
Variable
Mixins
Inheritance
and so on...
2012年1月10日星期二
[ CSS ] [ SCSS ]
#navbar li {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
}
#footer {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
@mixin rounded-top {
$RADIUS: 10px;
border-top-radius:
$RADIUS;
-moz-border-radius-top:
$RADIUS;
-webkit-border-top-radius:
$RADIUS;
}
#navbar li { @include rounded-
top; }
#footer { @include rounded-top; }
#navbar li {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
}
#footer {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
@mixin rounded-top {
$RADIUS: 10px;
border-top-radius:
$RADIUS;
-moz-border-radius-top:
$RADIUS;
-webkit-border-top-radius:
$RADIUS;
}
#navbar li { @include rounded-
top; }
#footer { @include rounded-top; }
#navbar li {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
}
#footer {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px;
}
2012年1月10日星期二
Nesting
Variable
Mixins
Inheritance
and so on...
2012年1月10日星期二
[ CSS ] [ SCSS ]
.warn {
background: yellow;
}
.bad_warn {
background: yellow;
font-weight: bold;
color: red;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
.warn {
background: yellow;
}
.bad_warn {
@extend .warn;
font-weight: bold;
color: red;
}
.warn {
background: yellow;
}
.bad_warn {
background: yellow;
font-weight: bold;
color: red;
}
2012年1月10日星期二
[ CSS ] [ SCSS ]
.warn {
background: yellow;
}
.bad_warn {
@extend .warn;
font-weight: bold;
color: red;
}
.warn {
background: yellow;
}
.bad_warn {
background: yellow;
font-weight: bold;
color: red;
}
2012年1月10日星期二
Nesting
Variable
Mixins
Inheritance
and so on...
2012年1月10日星期二
CSS / Sass / Compass
2012年1月10日星期二
Powered by SASS
Meta framework
Code snippets
Best practices
Compass is ...
2012年1月10日星期二
Tell me more !
2012年1月10日星期二
Helpers
Extension
Project Context
and lots more...
2012年1月10日星期二
Helpers
Extension
Project Context
and lots more...
2012年1月10日星期二
@import "compass"
.linear {
@include background(linear-
gradient(
top left, #333, #0C0));
}
2012年1月10日星期二
@import "compass"
.box {
@include border-radius(8px);
@include box-shadow(
rgba(#CCC, 0.5) 3px 3px 5px
);
}
2012年1月10日星期二
Helpers
Extension
Project Context
and lots more...
2012年1月10日星期二
Helpers
Extension
Project Context
and lots more...
2012年1月10日星期二
Helpers
Extension
Project Context
and lots more...
2012年1月10日星期二
DEMO
2012年1月10日星期二
Dojo
2012年1月10日星期二
Dojo
2012年1月10日星期二
One day ...
2012年1月10日星期二
Doraemon
2012年1月10日星期二
It’s easy! see...
2012年1月10日星期二
It’s easy! see...
2012年1月10日星期二
But I use IE9, and...
2012年1月10日星期二
But I use IE9, and...
2012年1月10日星期二
2012年1月10日星期二
2012年1月10日星期二
I use IE6, WTF...
2012年1月10日星期二
I use IE6, WTF...
2012年1月10日星期二
2012年1月10日星期二
God !
Help us !!
2012年1月10日星期二
Dojo ? What’s that?
2012年1月10日星期二
Powerful Javascript toolkit
Open source
BSD licensed
Dojo is ...
2012年1月10日星期二
Powerful ? Show me
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
Layout
Form
Dialogs
Tooltips
Trees
and lots more...
2012年1月10日星期二
DEMO
2012年1月10日星期二
Last ,
but not
least...
2012年1月10日星期二
IE6 must die!
2012年1月10日星期二
Reference
2012年1月10日星期二
ZenCoding
http://code.google.com/p/zen-coding/
SASS
http://sass-lang.com
Compass
http://compass-style.org
Dojo
http://dojotoolkit.org
2012年1月10日星期二

More Related Content

Similar to Speed up your web development

Denver CMS Expo Creating CSS template
Denver CMS Expo Creating CSS templateDenver CMS Expo Creating CSS template
Denver CMS Expo Creating CSS templatecompassdesign
 
Creating CSS Template with Barrie North
Creating CSS Template with Barrie NorthCreating CSS Template with Barrie North
Creating CSS Template with Barrie NorthJohn Coonen
 
揭秘Html5和Css3
揭秘Html5和Css3揭秘Html5和Css3
揭秘Html5和Css3Adam Lu
 
揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍裕波 周
 
Html5css3 go.yeefe.com
Html5css3 go.yeefe.comHtml5css3 go.yeefe.com
Html5css3 go.yeefe.comtellyeefe
 
2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪小 米猪
 
D2分享:让前端开发更高效
D2分享:让前端开发更高效D2分享:让前端开发更高效
D2分享:让前端开发更高效Berg Ray
 
高效率的、可维护的Css
高效率的、可维护的Css高效率的、可维护的Css
高效率的、可维护的Csssimaopig
 
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSSjeannewoo
 
网页设计及制作(Div+css)
网页设计及制作(Div+css)网页设计及制作(Div+css)
网页设计及制作(Div+css)lrk3
 
Chicago EXPO Creating a Pure CSS Template in Joomla 1.5
Chicago EXPO Creating a Pure CSS Template in Joomla 1.5Chicago EXPO Creating a Pure CSS Template in Joomla 1.5
Chicago EXPO Creating a Pure CSS Template in Joomla 1.5compassdesign
 
HTML5 介绍
HTML5 介绍HTML5 介绍
HTML5 介绍S S
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 

Similar to Speed up your web development (15)

Denver CMS Expo Creating CSS template
Denver CMS Expo Creating CSS templateDenver CMS Expo Creating CSS template
Denver CMS Expo Creating CSS template
 
Creating CSS Template with Barrie North
Creating CSS Template with Barrie NorthCreating CSS Template with Barrie North
Creating CSS Template with Barrie North
 
CSS 分享 (2) CSS 基本概念與語法
CSS 分享 (2) CSS 基本概念與語法CSS 分享 (2) CSS 基本概念與語法
CSS 分享 (2) CSS 基本概念與語法
 
揭秘Html5和Css3
揭秘Html5和Css3揭秘Html5和Css3
揭秘Html5和Css3
 
揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍揭秘Html5和Css3 ---- 鲁超伍
揭秘Html5和Css3 ---- 鲁超伍
 
Html5css3 go.yeefe.com
Html5css3 go.yeefe.comHtml5css3 go.yeefe.com
Html5css3 go.yeefe.com
 
2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪
 
D2分享:让前端开发更高效
D2分享:让前端开发更高效D2分享:让前端开发更高效
D2分享:让前端开发更高效
 
高效率的、可维护的Css
高效率的、可维护的Css高效率的、可维护的Css
高效率的、可维护的Css
 
[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS[译]Efficient, maintainable CSS
[译]Efficient, maintainable CSS
 
CSS 菜鳥救星
CSS 菜鳥救星CSS 菜鳥救星
CSS 菜鳥救星
 
网页设计及制作(Div+css)
网页设计及制作(Div+css)网页设计及制作(Div+css)
网页设计及制作(Div+css)
 
Chicago EXPO Creating a Pure CSS Template in Joomla 1.5
Chicago EXPO Creating a Pure CSS Template in Joomla 1.5Chicago EXPO Creating a Pure CSS Template in Joomla 1.5
Chicago EXPO Creating a Pure CSS Template in Joomla 1.5
 
HTML5 介绍
HTML5 介绍HTML5 介绍
HTML5 介绍
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 

More from Spin Lai

Django User Management & Social Authentication
Django User Management & Social AuthenticationDjango User Management & Social Authentication
Django User Management & Social AuthenticationSpin Lai
 
Django class based views for beginners
Django class based views for beginnersDjango class based views for beginners
Django class based views for beginnersSpin Lai
 
Bdd for legacy system
Bdd for legacy systemBdd for legacy system
Bdd for legacy systemSpin Lai
 
Two scoops of Django - Security Best Practices
Two scoops of Django - Security Best PracticesTwo scoops of Django - Security Best Practices
Two scoops of Django - Security Best PracticesSpin Lai
 
Hitcon2013 overview
Hitcon2013 overviewHitcon2013 overview
Hitcon2013 overviewSpin Lai
 
The django book - Chap10 : Advanced Models
The django book - Chap10 : Advanced ModelsThe django book - Chap10 : Advanced Models
The django book - Chap10 : Advanced ModelsSpin Lai
 

More from Spin Lai (6)

Django User Management & Social Authentication
Django User Management & Social AuthenticationDjango User Management & Social Authentication
Django User Management & Social Authentication
 
Django class based views for beginners
Django class based views for beginnersDjango class based views for beginners
Django class based views for beginners
 
Bdd for legacy system
Bdd for legacy systemBdd for legacy system
Bdd for legacy system
 
Two scoops of Django - Security Best Practices
Two scoops of Django - Security Best PracticesTwo scoops of Django - Security Best Practices
Two scoops of Django - Security Best Practices
 
Hitcon2013 overview
Hitcon2013 overviewHitcon2013 overview
Hitcon2013 overview
 
The django book - Chap10 : Advanced Models
The django book - Chap10 : Advanced ModelsThe django book - Chap10 : Advanced Models
The django book - Chap10 : Advanced Models
 

Speed up your web development