tech%meet(up%1:%...
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/1.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/2.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/3.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/4.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/5.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/6.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/7.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/8.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/9.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/10.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/11.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/12.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/13.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/14.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/15.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/16.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/17.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/18.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/19.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/20.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/21.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/22.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/23.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/24.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/25.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/26.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/27.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/28.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/29.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/30.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/31.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/32.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/33.jpg)
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%](https://reader031.vdocument.in/reader031/viewer/2022030502/5aaee38a7f8b9a07498cab7a/html5/thumbnails/34.jpg)
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