django’ - university of colorado boulderkena/classes/5448/s11/presentations/... · whatis’...

23
Django Sears Merri. CSCI 5448: ObjectOriented Analysis and Design

Upload: lamnhan

Post on 26-Mar-2018

221 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  

Sears  Merri.  CSCI  5448:  Object-­‐Oriented  Analysis  

and  Design  

Page 2: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

What  is  Django?  

“Django  is  a  high-­‐level  Python  Web  framework  that  encourages  rapid  development  and  clean,  pragmaKc  design.”  –  Django  Website      

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 3: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

History  •  Began  as  a  framework  for  The  World  Company,  used  to  manage  their  news  sites.  

•  Developers  needed  an  efficient  method  for  managing  and  publishing  news  arKcles.  

•  Open-­‐sourced  under  BSD  license  in  July  2005  

•  Django  SoVware  FoundaKon  founded  in  June  2008  to  conKnue  the  management  and  support  of  the  framework  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 4: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  Driven  Sites:  www.lawrence.com  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 5: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  Driven  Sites:  www.washingtonpost.com  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 6: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  Driven  Sites:    www.tabblo.com  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 7: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Primary  Concept  and  Design  Pa.ern:  Model-­‐View-­‐Controller  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Model  

Controller  View  

Data  Store  

User  Interface  

ApplicaKon  Logic  

Page 8: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  Model-­‐View-­‐Controller  Overview  

 •  Model:  Holds  data,  typically  in  a  database.  Superclass  is  Model.  Models  

for  applicaKons  are  created  in  Django  by  sub-­‐classing  the  Model  class.  A  variety  of  databases  are  supported  ranging  from  sqlite3  to  mysql  that  are  used  to  store  tables  of  model  objects.  

•  View:  Presents  data  to  users  using  Django  templates  and  template  language.    Accessed  by  creaKng  html  pages  with  Django  template  language.  Content  is  dynamically  rendered  using  a  wide  range  of  Django  methods.  

•  Controller:  Controls  which  data  and  views  are  presented.  Accessed  via  rouKng  requests  to  parKcular  view  rouKnes.  Each  view  rouKne  has  access  to  the  models  and  addiKonal  logic  to  create  and  manipulate  data.  Request  rouKng  is  handled  through  urls.py  while  view  logic  is  handled  through  funcKons  defined  in  views.py  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 9: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Model  •  ApplicaKon  models  

stored  in  models.py  

•  New  models  are  sub-­‐classed  from  django.db.models.Model  

•  Models  are  composed  of  different  types  of  fields:  –  Characters  –  Integers  –  Floats  –  Dates  –  And  more!  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 10: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

View  Controllers  

•  View  controllers  are  invoked  by  rouKng  requests  to  them  via  urls.py.  

•  Views.py  defines  the  set  of  controllers  associated  with  each  rule  in  urls.py  

•  Each  view  can:  – Accept  HTTP  messages  – Handle  input  and  output  – Generate  dynamic  content  for  rendering  by  the  template  language    

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 11: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

View  Controller  RouKng  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

urls.py  

def  about:  

def  index:  

def  blog:  

views.py  

www.test.com/blog  

r(‘^$’,  ‘index’)  r(‘^about/$’,  ‘about’)  r(‘^blog/$’,  ‘blog’)  

1.  URL  sent  to  urls.py  2.  Matched  with  the  blog  regex  3.  Routed  to  the  mapped  funcKon,  blog,  in  views.py  

1.  

2.  

3.  

Page 12: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

View  Controllers  –  urls.py  

•  List  of  regular  expressions  matching  urls  with  view  rouKnes  

•  LeV  hand  side  is  regex,  right  side  is  funcKon  in  views.py  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 13: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

View  Controllers  –  views.py  

•  Each  view  is  defined  as  a  funcKon  •  Each  funcKon  receives  a  request  •  A  request  contains  dicKonaries  of  data  •  Using  requests,  data  can  be  accessed  easily  for  saving  or  generaKng  dynamic  content  

•  Each  view  returns  an  HTTP  response  ranging  from  redirects  to  dynamically  rendered  HTML  pages  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 14: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

View  Controllers  –  views.py  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 15: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Views  –  Templates  and  Template  Language  

•  Views  are  essenKally  html  pages  with  embedded  template  language  

•  Template  language  is  Django  specific  

•  Django  renders  template  language  using  data  received  from  the  view  controller  

 

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 16: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Template  Language  Syntax  Template  language  consists  of  intuiKvely  tagged  python  statements    {%  for  item  in  list  %}  

 {{  item  }}  {%  endfor  %}    {  %  if  item  %}  

 {{  item  }}  {%  endif  %}    This  language  is  embedded  in  html  pages  and  gets  rendered  when  a  view  controller  passes  data  and  the  page  to  the  renderer  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 17: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Views  –  Template  and  Template  Language  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 18: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  Projects  and  ApplicaKons  

•  Django  organizes  MVC  implementaKons  into  projects.  

•  Projects  aggregate  applicaKons.  

•  Each  applicaKon  has  its  own  models,  views,  and  controllers.  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Project

Blog

e-Commerice

Page 19: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Project  ConfiguraKon  –  seqngs.py  

•  Holds  the  configuraKon  seqngs  for  a  project  – Database  configuraKon  – Media  directory  (css,  javascript,  etc.)  – Template  directory  (html  files)  – Django  middleware  (such  as  authenKcaKon  and  CSRF)  

– Django  modules  – Project  applicaKons  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 20: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

CreaKng  a  Django  Website  •  Create  a  project  –  django-­‐admin.py  startproject  myproject  

•  Create  an  app  –  django-­‐admin.py  startapp  myapp  

•  Configure  seqngs.py  •  Configure  the  MVC  implementaKon  for  myapp  –  urls.py  –  views.py  – models.py  

•  There  is  an  excellent  tutorial  here.  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 21: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

The  Life  of  a  Request  1.  HTTP  packet  arrives  at  web  server  2.  WSGI  routes  packet  to  Django  core  3.  Django  core:  

1.  parses  message  2.  routes  the  message  to  the  appropriate  view  handler  via  

urls.py  3.  Creates  a  request  object  

4.  Controller  handler  parses  request  and  performs  appropriate  logic  via  handlers  in  views.py  

5.  Controller  hands  resulKng  data  to  the  template  system  6.  Template  system  pulls  HTML,  fills  with  content  from  view  

handler,  sends  response  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 22: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

Django  in  AcKon  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.  

Page 23: Django’ - University of Colorado Boulderkena/classes/5448/s11/presentations/... · Whatis’ Django? “Django’is’ahigh9level’Python’Web’framework’ thatencourages’rapid’developmentand’clean,’

References  

•  Django  Website  

•  Django  Wikipedia  

•  Social  Health  Website  

CSCI  5448  PresentaKon  -­‐  Sears  Merri.