Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Django Web Framework: Zhaojie Zhang CSCI5828 Class Presenta On 03/20/2012

Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

Django

 Web  Framework  

Zhaojie  Zhang  
CSCI5828  Class  Presenta=on  
03/20/2012  
Outline  
•  Web  frameworks  
•  Why  python?  Why  Django?  
•  Introduc=on  to  Django  
•  An  example  of  Django  project  
•  Summary  of  benefits  and  features  of  Django  
•  Comparison  of  Django  and  Ruby  on  Rails  
•  Addi=onal  tools  to  facilitate  Django  Development  
•  Applica=ons  made  with  Django  
•  To  learn  more  about  Django  
•  References  
Web  Frameworks  
Languages Web frameworks

•  Php   •  Zend,  Symfony,  Phpdevshell…  


•  Python   •  Django,  web2py,  Cherrypy,  …  
•  Java   •  Struts,  Spring,  Tapestry,  GWT,  …  
•  Ruby   •  Ruby  on  rails,…  
•  Perl   •  Catalyst,  Mason,  …  
•  Javasript   •  JavaScriptMVC,  …  
•  …   •  …  
Why  Python?  
•  High-­‐level  language  
•  Concise  syntax  and  easy  to  learn  
•  Large  and  growing  developer  
community  
•  Portable  on  almost  all  plaYorms  
Why  Django?  
•  Python  programming  language  
•  Open-­‐source  project  
•  Large  and  growing  community  
•  Well-­‐documented  
•  Large  collec=ons  of  apps  
•  Good  debugging  feedbacks  
History  of  the  Django  Project  
•  Django  started  as  an  internal  project  at  the  
Lawrence  Journal-­‐world  newspaper  in  2003  and  
was  created  to  meet  the  fast  deadlines  of  
journalism  websites.  
•  Django  was  released  to  the  public  by  the  
developers  in  2005.  
•  The  project  was  named  a[er  the  jazz  Guitarist  
Django  Reinhardt.  
•  Now  an  open  source  web  framework  for  building  
maintainable  and  reusable  web  applica=ons.  
Introduc=on  to  Django  
•  A  high-­‐level  python  web  framework  adhering  
to  the  DRY  principle:  Don’t  repeat  yourself.  
•  MVC  design  pa`erns:  code  modules  are  
divided  into  logic  groups.  
•  Automa=c  Admin  Interface.  
•  Elegant  URL  design.  
•  Powerful,  extensible  and  designer-­‐friendly  
template  system.  
•  Cache  system  available  for  super  
performance.  
Web  Development  without  Web  
Frameworks  
•  A  python  CGI  script  example:  
 
The  Django  Counterpart  with  the  
MVC  Design  Pa`ern  
Steps  for  Using  Django  
•  Install  Django  (python  assumed  to  be  installed)  
•  Create  a  project  
•  Start  an  applica=on  
•  Create  the  database  
•  Define  the  models  
•  Write  the  templates  
•  Define  the  views  
•  Crate  URL  mappings  
•  Test  and  deploy  the  applica=on  
Install  and  Start  Django  
•  Download  the  tarball,  which  will  be  named  
something  like  Django-­‐*.tar.gz.  
•  tar  xzvf  Django-­‐*.tar.gz.  
•  cd  Django-­‐*.  
•  sudo  python  setup.py  install.  
•  Start  python  and  you  should  be  able  to  import  
Django:    
>>>  import  django      
 
Start  a  Project  
•  This  example  project  is  done  on  a  Mac  pro  
notebook  for  the  “polls”  app  from  the  Django  
project  website.  
•  Create  a  new  directory  to  start  working  in:  
     mkdir  /Users/zhaojie/DesktopDjango_project/  
•  Run  the  following  command  to  create  a  
mysite  directory  in  your  current  directory:  
         django-­‐admin.py  startproject  mysite  
Start  a  Project  
             Inside  the  “mysite”  folder,  four  files  will  be  
generated:  
•  __init__.py:  A  file  required  for  Python  treat  the  directory  as  a  
package  (i.e.,  a  group  of  modules)  
•  manage.py:  A  command-­‐line  u=lity  that  lets  you  interact  with  this  
Django  project  in  various  ways  
•  seings.py:  Seings/configura=on  for  this  Django  project  
•  urls.py:  The  URL  declara=ons  for  this  Django  project;  a  “table  of  
contents”  of  your  Django-­‐powered  site  
Start  a  Project  
•  Change  into  the  “mysite”  directory,  and  run  the  
following  command  to  start  the  built-­‐in,  lightweight  
development  server:    
                 python  manage.py  runserver  
•  You  would  see  something  like  these  in  the  terminal:  
 Valida=ng  models…  
 0  errors  found  
 Django  version  1.3.1,  using  seings  'mysite.seings'  
 Development  server  is  running  at  h`p://localhost:8000/  
 Quit  the  server  with  CONTROL-­‐C.  
Start  a  Project  
•  If  you  go  to  h`p://localhost:8000  in  the  
browser,  you  should  see  the  following  
webpage,  sugges=ng  the  development  web  
server  is  working:  
Supported  Databases  
Django  supports  the  following  three  databases:  
•  PostgreSQL  (h`p://www.postgresql.org/)  
•  SQLite  3  (h`p://www.sqlite.org/)  
•  MySQL  (h`p://www.mysql.com/)  

•  SQLite3  is  the  database  used  in  this  


presenta=on.  
Database  Setup  
•  In  “seings.py”,  change  the  default  to  the  following:  
DATABASE_ENGINE  =  'sqlite3'.  
DATABASE_NAME  =  '/User/zhaojie/Desktop/Django_project/
mysite/mydata.db  
 
•  “mydata.db”  does  not  exist  at  this  point,  which  will  be  
created  later.  SQLite  databases  are  just  plain  files  and  that  is  
why  the  absolute  path  needs  to  be  specified.  

•  Also  in  “seings.py”,  add  ”polls”  to  the  


“INSTALLED_APPS”(the  polls  app  will  be  created  later).  
   
Start  an  App  
•  Run  the  following  command  to  create  the  
polls  app:  
         Python  manage.py  startapp  polls  
•  A  “polls”  directory  will  be  created  in  the  
mysite  directory  with  the  following  files  
inside:  
             polls/  __init__.py    
                                   models.py    
                                     tests.py    
Database  Ini=aliza=on  
•  Run  “Python  manage.py  sql  polls”  
•     
•  Then  “python  manage.py  syncdb”  

•  These  commands  will  create  a  database  schema  


(CREATE  TABLE  statements)  for  the  “polls”  app  and  
also  create  a  Python  database-­‐access  API  for  
accessing  Poll  and  Choice  objects.  
 
Define  the  Models  
•  Define  the  models  in  the  “models.py”  file  
under  the  “polls”  directory:  
URL  Mapping  
•  In  the  “urls.py”  file,  make  the  following  
changes:  
 
Start  the  Server  
•  Use  the  “python  manage.py  runserver”  
command  to  start  the  server,  and  you  should  
see  the  following  admin  interfac:    
Django  Summary  
•  From  the  example  above,  we  can  see  a  few  
characteris=cs  of  Django:    
1)  it  provides  a  very  user-­‐friendly  interface  for  
dealing  with  databases;  
2)  the  template  system  enables  the  developers  
to  focus  on  the  app  building  instead  of  on  the  
details  of  HTML;  
3)  the  built-­‐in  development  server  and  admin  
interface  helps  the  developers  to  test  the  
applica=ons  easily.      
Django  Summary  
•  Besides  the  several  characteris=cs  men=oned  
in  last  slide,  Django  has  more  to  offer  which  
were  not  exemplified  in  the  previous  simple  
example.  Here  are  a  few  of  them:  
4)  Genera=ng  non-­‐HTML  content  
5)  Caching  
6)  Middleware  
7)  Interna=onaliza=on  
8)  Security  
9)  Session  framework  
Django  Summary  
•  4)  Genera=ng  non-­‐HTML  content  (Built-­‐n  tools  
for  producing  non-­‐HTML  content):  

•  RSS/Atom  syndica=on  feeds  


•  Sitemaps  
Django  Summary  
•  5)  Caching:  

•  Django  comes  with  a  robust  cache  system  that  


lets  you  save  dynamic  pages  so  that  they  do  
not  needed  to  be  calculated  each  =me  a  
request  is  made.  
Django  Summary  
•  6)  Middleware:  

•  A  middleware  component  is  a  python  class  


that  conforms  to  a  certain  API.  
•  All  of  the  session  and  user  tools  are  made  
possible  by  a  few  small  pieces  of  middleware.  
   
Django  Summary  
•  7)  Interna=onaliza=on:  

•  A  minimal  number  of  “transla=on  strings”  are  


needed  in  the  python  codes  for  transla=on.  
•  It  allows  the  web  applica=ons  to  be  translated  
for  users  with  their  own  language  
preferences.  
Django  Summary  
•  8)  Security:  

•  Django  is  designed  to  automatcally  protect  


you  from  many  of  the  common  security  
mistakes  that  web  developers  make.  
Django  Summary  
•  Session  framework:  

•  The  session  framework  lets  you  store  and  


retrieve  arbitrary  data  on  a  per-­‐site-­‐visitor  
basis.  It  stores  data  on  the  server  side  and  
abstracts  the  sending  and  receiving  of  cookies.  
Comparisons  with  Ruby  on  Rails  
•  A  comparison  made  between  Django  and  
another  popular  web  framework:  

Ben Askins & Alan Green. Open Source Developer’s conferecne,2006.


Addi=onal  Tools  to  Facilitate  
Django  Development  
•  Django  is  a  thriving  framework,  and  lots  of  
people  are  contribu=ng  their  own  modules/
tools  to  facilitate  Django  development  and  
make  Django  more  powerful.  
•  According  to  the  DjangoPackages  website  
alone,  to  this  date,  it  records  at  least  944  
Apps,  51  Frameworks  and  44  individual  
Projects  wri`en  for  the  Django  Web  
framework.  
Addi=onal  Tools  to  Make  Django  
More  Powerful  
       Here  are  just  a  few  I  found  interes=ng  and  
useful:  
 
•  GeoDjango:  a  customized  GIS  web  framework  
•  Django  Debug  Toolbar:    debugging  tool  
•  Django  Easy  Maps:  map  displaying  tool      
•  Django  Haystack:  modular  search  tool  
Addi=onal  Tools  to  Facilitate  
Django  Development  
•  django-­‐revision:  An  extension  to  the  Django  
web  framework  that  provides  comprehensive  
version  control  facili=es.  
•  South:  provides  a  simple,  stable  and  database-­‐
independent  migra=on  layer  to  your  Django  
applica=ons.  
•  Fabulous:  deploy  django  apps  to  Amazon  EC2  
with  ONE  command.  
Websites  Using  Django  
•  An  incomplete  list  of  websites  using  Django  is  
registered  in  the  DjangoSites  website.  Here  
are  a  few  examples:    

WashingtonPost! I knew
DjangoSites it is a famous
website itself! newspaper, and its
website is made with
Django!
Wow, spreading
across the world!
To  Learn  More  About  Django  
•  There  are  lots  of  Django  tutorials  and  
examples  on  the  internet.  Here  are  a  few:  

•  h`ps://docs.djangoproject.com/en/dev/intro/
whatsnext/  (Official  Django  Documents)  
•  h`ps://code.djangoproject.com/wiki/Tutorials  
(Django  Tutorial)  
•  h`p://invisibleroads.com/tutorials/geodjango-­‐
googlemaps-­‐build.html  (Official  GeoDjango  Tutorial)  
To  Learn  More  About  Django  
       Besides  Django  tutorials  and  examples,  you  
can  actually  a`end  conferences  with  a  focus  
on  Django  and  here  are  a  few:  

•  DjangoCon  US  
•  DjangoCon  Europe  
•  DjangoCon  Asia  Pacific  
•  DjangoCon  Australia  
•  …  
•  You  can  see  Django  is  popular  world-­‐wide!  
References  
•  h`p://www.webdesignish.com/the-­‐best-­‐web-­‐
development-­‐frameworks.html            
•  h`ps://www.djangoproject.com/  (official  Django  website)  
•  h`p://www.eecho.info/Echo/python/history-­‐of-­‐django/  
•  Ben  Askins  &  Alan  Green.  A  Rails/Django  Comparison.Open  
Source  Developer’s  Conference,  2006  
•  Adrian  Holovaty  and  Jacob  Kaplan-­‐Moss.  The  defini=ve  
guide  to  django,  2010  
•  h`p://djangopackages.com/    (Django  packages)  
References  
•  h`ps://github.com/dcramer/django-­‐debug-­‐toolbar  
(Django  Debugging  Toolbar)  
•  h`ps://bitbucket.org/kmike/django-­‐easy-­‐maps  
(Django  Easy  Maps)  
•  h`ps://github.com/toastdriven/django-­‐haystack  
(Django  Haystack)  
•  h`ps://github.com/e=anen/django-­‐reversion  
(Django-­‐revision)  
•  h`p://south.aeracode.org  (South)  
•  h`ps://github.com/gcollazo/Fabulous  (Fabulous)  
References  
•  h`p://geodjango.org/    (GeoDjango)  
•  h`p://www.djangosites.org/  (DjangoSites)  
•  h`p://djangocon.us/blog/2011/11/08/get-­‐
ready-­‐2012/  (DjangoCon  US)  
•  h`p://2012.djangocon.eu/  (DjangoCon  EU)  

You might also like