tech%meet(up%1:%...

34
Malaysia 2014 Tech Meetup 1: Intro to Django

Upload: trinhthu

Post on 19-Mar-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Tech  Meet-­‐up  1:  Intro  to  Django  

Page 2: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Today’s  Meet-­‐up  

•  The  Big  Picture  •  Django  –  A  Web  ApplicaAon  Framework  

•  Your  First  Django  App  •  Models  in  Django  

•  Today’s  Assignment  

2  

Page 3: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

3  

The  Big  Picture  

Page 4: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Once  upon  a  Ame…  

4  

OR  

Page 5: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Nowadays…  

OR   OR  

Page 6: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

ImplemenAng  the  Backend  

We  need  to  implement  the  backend:  •  A  web  applicaAon  framework,  like  – MonoRail,  CppCMS,  Apache  Click,  Grails,  Spring,  Stripes,  mulAple,  Catalyst,  CakePHP,  Drupal,  Symfony,  CherryPy,  Django,  web2py,  Ruby  on  Rails,  Compujure  

•  A  host,  like  – Heroku,  Google  App  Engine  

•  A  RESTful  API  to  communicate  with  frontend  

6  

Page 7: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Web  ApplicaAon  Framework  

7  

•  A  framework  (code  libraries)  to  help  you  make  web  applicaAons  or  websites  

•  Supports  you  with  – Handling  HTTP  requests  – Templates  for  common  HTML  layouts  – URL  mapping  – Database  communicaAon  – Session  management  – Site  security  

Page 8: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

8  

Django    Web  ApplicaAon  Framework  

Page 9: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Why  Django?  

Page 10: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Why  Django?  

•  Fast  and  easy  development  of  web  applicaAons  – Modular  and  re-­‐useable.    Don’t  Repeat  Yourself  (DRY)  principle  

– Built-­‐in  database  management  

•  AcAve  development  and  wide  community  support  

•  Supported  by  Google  App  Engine  &  Heroku  

10  

Page 11: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Page 12: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Django  vs.  PHP  

Page 13: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

PHP  SELECT  Statement  

Page 14: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Django  SELECT  Statement  

Page 15: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Focus  on  building  your  product!    

Page 16: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

vs  

Page 17: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Django  Architecture  

Page 18: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Model-­‐View-­‐Controller  (MVC)  

•  A  padern  for  organizing  code  ofen  seen  in  web  app  frameworks  

•  Main  idea:  1.  Separate  storage  and  manipulaAon  of  data  (model)  

from  presentaAon  of  data  (view)  2.  Controller  communicates  between  model  and  view  

•  Advantages  – Develop  and  test  model  and  view  independently  

–  Easier  for  others  to  understand  (modularity)  

18  

Page 19: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Model-­‐View-­‐Controller  (MVC)  (news  site  example)  

19  

Controller  

View   Model  

•  News  stories  and  images  in  a  database  

•  User  comments  

•   Layout  of  stories  on  mobile  phone  or  desktop  browser  

Send  request  for  a  story  

Asks  the  model  for  the  story  and  its  user  comments  

Serves  requested  story  

Page 20: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Model-­‐Template-­‐View  

In  Django:  Model-­‐Template-­‐View                    (similar  to  MVC  padern)  

•  Model    – describes  database  informaAon  

•  Template    – decides  how  to  present  informaAon  

•  View    – manages  what  informaAon  to  output  based  on  request  

20  

Page 21: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Model-­‐Template-­‐View  

21  

View  

Template   Model  

Send  request  for  data  

Asks  the  model  for  data  

Provide  Database  InformaAon  UI  Layout   Communicate  

with  Database  

Handles  InformaAon  Exchange  

Model  

Page 22: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

22  

Your  First  Django  App  

Page 23: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Programming  Interface  

23  

Terminal  /  Command  Prompt   Python  IDLE  or  Favorite  editor  

Page 24: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

New  Project  

24  

Project  Structure:    Whole  project  in  one  folder  (mysite)  

•  MySite  Python  package  •  ApplicaAons  (polls)  •  (Database)  •  manage.py  

•  Use  for  interacAon  with  your  project  

•  MySite  Python  Package  •  __init__.py  •  sekngs.py  •  urls.py  •  wsgi.py  

Page 25: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

First  Django  Setup  

Afer  a  couple  commands  in  terminal...  

25  

Page 26: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Models  

26  

Page 27: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Models  

27  

View  

Template   Model  

Send  request  for  data  

Asks  the  model  for  data  

Provide  Database  InformaAon  UI  Layout   Communicate  

with  Database  

Handles  InformaAon  Exchange  

Page 28: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

What  is  a  Model  

•  Python  class  describing  data  in  your  applicaAon  – Subclass  of  models.Model  

•  Assigns  adributes  to  each  data  field  •  Avoid  direct  work  with  the  database  – No  need  to  handle  database  connecAons,  Ameouts,  etc.  –  Let  Django  do  it  for  you!  

– Provides  Schema  for  database  

28  

Page 29: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Django  Model  Syntax  

29  

Import  statements  

SubClass  of  models.Model  Class  

Define  fields  

Can  define  more  funcAons  

__unicode__  corresponds  to  python  __str__    

Page 30: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Django  Fields  

We  can  define  fields  directly  in  our  model  class  – No  need  to  define  manually  in  database  

Example:  create  two  fields  in  our  Poll  class  

30  

Define  Type  of  Field  •  E.g.  models.CharField  

Define  arguments  of  field  •  E.g.  max_length=200  

Django  will  automaAcally  create  fields  in  database    

Page 31: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Important  Django  Field  Types  

•  BooleanField  

–  Checkbox  •  CharField(max_length)  

–  Single-­‐line  textbox  •  DateField  

–  Javascript  calendar  •  DateTimeField    

–  Javascript  calendar,  Ame  picker  •  DecimalField(max_digits,  decimal_places)  

–  Decimal  numbers  •  EmailField  

–  Charfield  that  validates  email  address  

31  

•  FileField  •  File  upload,  stores  path  

in  database  •  FloatField  

•  FloaAng  point  numbers  •  IntegerField  

Integer  textbox  •  PosiAveIntegerField  

•  Integer  textbos  for  posiAve  integers  

•  TextField  •  MulA-­‐line  textbox  

Page 32: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Rules  of  Django  Models  

•  When  you  update  a  model,  ALWAYS  RUN    python  manage.py  syncdb  

•  All  classes  extend  models.Model  •  Models  only  live  in  Apps  •  Django  doesn't  save  objects  unAl  you  call  save()  method  

>>>a1  =  Album(...)  #  a1  is  not  saved  to  the  database  yet!  >>>a1.save()  #  Now  it  is.  

32  

Page 33: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

33  

Today’s  Assignment  

Page 34: Tech%Meet(up%1:% Intro%to%Django%gsl.mit.edu/media/programs/malaysia-summer-2014/materials/django-1… · Symfony,CherryPy,%Django,%web2py,%Ruby%on%Rails,% Compujure% • A%host,%like%

Malaysia  2014  

Today’s  Assignment  

Get  started  with  Django!  –  If  you  haven’t  already,  install  Django  1.6  – Create  your  first  Django  app:  

 WriAng  your  first  Django  App  –  Part  1  

Helpful  DocumentaAon:  – Models  secAon  of  Django  docs  

34