SlideShare a Scribd company logo
Django:
                         A Whirlwind Tour
                               Brad Montgomery

                           Email: brad@workforpie.com
                             Twitter: bkmontgomery




Friday, November 2, 12
Django: Features
                     • Python
                     • ORM: Object-Relational Mapper
                     • MVC-inspired (MVT)
                     • Clean URLs
                     • Huge Community
                     • Worlds Best Documentation
Friday, November 2, 12
Batteries Included
                              aka: contrib apps
                     • admin
                     • auth
                     • comments
                     • gis
                     • syndication (atom/rss feeds)
                     • sitemaps
Friday, November 2, 12
https://djangoproject.com/




Friday, November 2, 12
Community
                     • 3rd-party, open source apps
                     • django-registration
                     • django-social-auth
                     • django-taggit
                     • django-gravatar2
                     • django-relationships
Friday, November 2, 12
http://djangopackages.com/




Friday, November 2, 12
So, who’s actually using Django?




Friday, November 2, 12
Disqus,
                            Instagram,
                         Pintrest, Mozilla,
                         Rdio, Bitbucket,
                          Work for Pie,
                           GiantBomb,
                            The Onion
Friday, November 2, 12
Projects & Apps
                     • Projects are a collection of applications
                     • Settings
                      • DB Connections
                      • installed apps
                      • Filesystem paths
                     • Command-line tool: manage.py
Friday, November 2, 12
Projects & Apps

                         $ django-admin.py 
                              startproject 
                              sampleproject




Friday, November 2, 12
Projects & Apps
                         sampleproject/
                         !"" manage.py
                         #"" sampleproject
                             !"" __init__.py
                             !"" settings.py
                             !"" urls.py
                             #"" wsgi.py

Friday, November 2, 12
Projects & Apps

                         $ python manage.py 
                                  startapp blog




Friday, November 2, 12
Projects & Apps
                         sampleproject/
                         !"" blog
                             !"" __init__.py
                             !"" models.py
                             !"" tests.py
                             #"" views.py


Friday, November 2, 12
Models
             from django.db import models
             from django.contrib.auth.models import User


             class Post(models.Model):
                 author = models.ForeignKey(User)
                 title = models.CharField(max_length=128)
                 slug = models.SlugField(max_length=128, unique=True)
                 content = models.TextField()
                 published_on = models.DateTimeField(auto_now_add=True)



                         sampleproject/blog/models.py


Friday, November 2, 12
syncdb


                         $ python manage.py syncdb




Friday, November 2, 12
Views
                     from django.shortcuts import render_to_response
                     from django.template import RequestContext
                     from models import Post

                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
Views
                     from django.shortcuts import render_to_response
                     from django.template import RequestContext
                     from models import Post

                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
Views
                     from django.shortcuts import render_to_response
                     from django.template import RequestContext
                     from models import Post

                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
Views
                     from django.shortcuts import render_to_response
                     from django.template import RequestContext
                     from models import Post

                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
Views
                     from django.shortcuts import render_to_response
                     from django.template import RequestContext
                     from models import Post

                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
Views
                     from django.shortcuts import render_to_response
                     from django.template import RequestContext
                     from models import Post

                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
A base template
                             <!DOCTYPE html>
                             <html>
                             <head>
                                 <title>
                                 {% block title %}{% endblock %}
                                 </title>
                             </head>

                             <body>
                                 {% block content %}{% endblock %}
                             </body>
                             </html>


                         sampleproject/sampleproject/templates/base.html




Friday, November 2, 12
A base template
                             <!DOCTYPE html>
                             <html>
                             <head>
                                 <title>
                                 {% block title %}{% endblock %}
                                 </title>
                             </head>

                             <body>
                                 {% block content %}{% endblock %}
                             </body>
                             </html>


                         sampleproject/sampleproject/templates/base.html




Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html



Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html



Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html


Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html


Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html


Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html



Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html


Friday, November 2, 12
A post template
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html


Friday, November 2, 12
URL Conf’s

                     • Tie it all together!
                     • Route HTTP requests to views
                      • May also capture values



Friday, November 2, 12
Root URLConf
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
Root URLConf
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
Root URLConf
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
Root URLConf
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
Root URLConf
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
Root URLConf
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
An HTTP Request




Friday, November 2, 12
An HTTP Request




Friday, November 2, 12
An HTTP Request
                            blog/sample-title/
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
An HTTP Request
                            blog/sample-title/
                         from django.conf.urls import patterns, include, url

                         from django.contrib import admin
                         admin.autodiscover()

                         urlpatterns = patterns('',
                             url(r'^blog/(?P<post_slug>.+)/$',
                                 'blog.views.display_post',
                                 name='display_post'),
                             url(r'^admin/', include(admin.site.urls)),
                         )



                    sampleproject/sampleproject/urls.py


Friday, November 2, 12
An HTTP Request
                          sample-title
                     def display_post(request, post_slug):
                         post = Post.objects.get(slug=post_slug)
                         template_data = {'post': post}
                         template = "blog/post.html"

                          return render_to_response(
                              template,
                              template_data,
                              context_instance=RequestContext(request)
                          )


                         sampleproject/blog/views.py

Friday, November 2, 12
An HTTP Request
                         {% extends "base.html" %}        Sample Title
                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html



Friday, November 2, 12
An HTTP Request
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}                    Lorem Ipsum...
                         {% block content %}
                             <h1>{{ post.title }}</h1>

                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html



Friday, November 2, 12
An HTTP Request
                         {% extends "base.html" %}

                         {% block title %}
                             {{ post.title }}
                         {% endblock %}

                         {% block content %}
                             <h1>{{ post.title }}</h1>        Nov 3, 2012
                             {{ post.content|urlize|linebreaks }}

                             <p>Published on:
                                {{ post.published_on|date:"M d, Y" }}</p>
                         {% endblock %}


                         sampleproject/blog/templates/blog/post.html



Friday, November 2, 12
An HTTP Request




Friday, November 2, 12
Friday, November 2, 12
A Typical Stack




                                      Linux

Friday, November 2, 12
A Typical Stack




                           PostgreSQL
                                        Linux

Friday, November 2, 12
A Typical Stack


                          Gunicorn + Django



                             PostgreSQL
                                              Linux

Friday, November 2, 12
A Typical Stack
                                nginx


                          Gunicorn + Django



                             PostgreSQL
                                              Linux

Friday, November 2, 12
A Typical Stack
                              Varnish
                                             Memcached
                               nginx

                                             RabbitMQ
                         Gunicorn + Django


                                               Redis
                            PostgreSQL
                                                  Linux

Friday, November 2, 12
Friday, November 2, 12
Enter: Heroku

                     • Deploy & Scale in the Cloud
                     • Provides on-demand App/DB servers
                     • The Heroku Toolbelt
                     • http://www.heroku.com/

Friday, November 2, 12
Deploying to Heroku
                   Do a little bit of setup...
                     $ heroku create

                     Creating app-name... done, stack is cedar
                     http://app-name.herokuapp.com/ | git@heroku.com:app-name.git
                     Git remote heroku added




Friday, November 2, 12
Deploying to Heroku

                     $ git push heroku master

                         ... lots of output ...




Friday, November 2, 12
Deploying to Heroku

                     $ heroku run python manage.py syncdb

                     ... your typical syncdb output ...




Friday, November 2, 12
Deploying to Heroku
                   Develop locally, then when you want
                   to deploy, just run:

                     $ git push heroku master




Friday, November 2, 12
Want to Learn More?

                     •   Official Django Docs

                         •   https://docs.djangoproject.com

                     •   *Djangobook http://www.djangobook.com

                     •   Find Apps: http://www.djangopackages.com/

                     •   Coming Soon: http://gettingstartedwithdjango.com/




Friday, November 2, 12
Q.E.D.




Friday, November 2, 12
Ad

More Related Content

What's hot (20)

Hybrid Web Applications
Hybrid Web ApplicationsHybrid Web Applications
Hybrid Web Applications
James Da Costa
 
Django Performance Recipes
Django Performance RecipesDjango Performance Recipes
Django Performance Recipes
Jon Atkinson
 
Create responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJSCreate responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJS
Hannes Hapke
 
Web application development with Django framework
Web application development with Django frameworkWeb application development with Django framework
Web application development with Django framework
flapiello
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
Eric Palakovich Carr
 
Django by rj
Django by rjDjango by rj
Django by rj
Shree M.L.Kakadiya MCA mahila college, Amreli
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
Rosario Renga
 
Django Heresies
Django HeresiesDjango Heresies
Django Heresies
Simon Willison
 
Django in the Real World
Django in the Real WorldDjango in the Real World
Django in the Real World
Jacob Kaplan-Moss
 
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3
makoto tsuyuki
 
Writing Pluggable Software
Writing Pluggable SoftwareWriting Pluggable Software
Writing Pluggable Software
Tatsuhiko Miyagawa
 
The effective use of Django ORM
The effective use of Django ORMThe effective use of Django ORM
The effective use of Django ORM
Yaroslav Muravskyi
 
Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics Presentation
Shrinath Shenoy
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
colinkingswood
 
Making Django and NoSQL Play Nice
Making Django and NoSQL Play NiceMaking Django and NoSQL Play Nice
Making Django and NoSQL Play Nice
Alex Gaynor
 
Moving from Django Apps to Services
Moving from Django Apps to ServicesMoving from Django Apps to Services
Moving from Django Apps to Services
Craig Kerstiens
 
國民雲端架構 Django + GAE
國民雲端架構 Django + GAE國民雲端架構 Django + GAE
國民雲端架構 Django + GAE
Winston Chen
 
Django multi-tier
Django multi-tierDjango multi-tier
Django multi-tier
smirolo
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
Nicholas Zakas
 
Django Documentation
Django DocumentationDjango Documentation
Django Documentation
Ying wei (Joe) Chou
 
Hybrid Web Applications
Hybrid Web ApplicationsHybrid Web Applications
Hybrid Web Applications
James Da Costa
 
Django Performance Recipes
Django Performance RecipesDjango Performance Recipes
Django Performance Recipes
Jon Atkinson
 
Create responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJSCreate responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJS
Hannes Hapke
 
Web application development with Django framework
Web application development with Django frameworkWeb application development with Django framework
Web application development with Django framework
flapiello
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
Eric Palakovich Carr
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
Rosario Renga
 
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3
makoto tsuyuki
 
The effective use of Django ORM
The effective use of Django ORMThe effective use of Django ORM
The effective use of Django ORM
Yaroslav Muravskyi
 
Web development with django - Basics Presentation
Web development with django - Basics PresentationWeb development with django - Basics Presentation
Web development with django - Basics Presentation
Shrinath Shenoy
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
colinkingswood
 
Making Django and NoSQL Play Nice
Making Django and NoSQL Play NiceMaking Django and NoSQL Play Nice
Making Django and NoSQL Play Nice
Alex Gaynor
 
Moving from Django Apps to Services
Moving from Django Apps to ServicesMoving from Django Apps to Services
Moving from Django Apps to Services
Craig Kerstiens
 
國民雲端架構 Django + GAE
國民雲端架構 Django + GAE國民雲端架構 Django + GAE
國民雲端架構 Django + GAE
Winston Chen
 
Django multi-tier
Django multi-tierDjango multi-tier
Django multi-tier
smirolo
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
Nicholas Zakas
 

Similar to Django a whirlwind tour (20)

A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
Christopher Adams
 
Django Portfolio Website Workshop (1).pptx
Django Portfolio Website Workshop (1).pptxDjango Portfolio Website Workshop (1).pptx
Django Portfolio Website Workshop (1).pptx
AmaraCostachiu
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
Joaquim Rocha
 
Grails 2.0 Update
Grails 2.0 UpdateGrails 2.0 Update
Grails 2.0 Update
Peter Ledbrook
 
Django
DjangoDjango
Django
Mohamed Ramadan
 
Django - basics
Django - basicsDjango - basics
Django - basics
University of Technology
 
Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1
MicroPyramid .
 
templates in Django material : Training available at Baabtra
templates in Django material : Training available at Baabtratemplates in Django material : Training available at Baabtra
templates in Django material : Training available at Baabtra
baabtra.com - No. 1 supplier of quality freshers
 
Projeto-web-services-Spring-Boot-JPA.pdf
Projeto-web-services-Spring-Boot-JPA.pdfProjeto-web-services-Spring-Boot-JPA.pdf
Projeto-web-services-Spring-Boot-JPA.pdf
AdrianoSantos888423
 
Gae Meets Django
Gae Meets DjangoGae Meets Django
Gae Meets Django
fool2nd
 
Django at Scale
Django at ScaleDjango at Scale
Django at Scale
bretthoerner
 
Django tech-talk
Django tech-talkDjango tech-talk
Django tech-talk
dtdannen
 
Django cheat sheet
Django cheat sheetDjango cheat sheet
Django cheat sheet
Lam Hoang
 
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
makoto tsuyuki
 
Django
DjangoDjango
Django
Harmeet Lamba
 
Python, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and DjangoPython, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and Django
Sammy Fung
 
Data Migrations in the App Engine Datastore
Data Migrations in the App Engine DatastoreData Migrations in the App Engine Datastore
Data Migrations in the App Engine Datastore
Ryan Morlok
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
Andres Almiray
 
Django Overview
Django OverviewDjango Overview
Django Overview
Brian Tol
 
django_reference_sheet
django_reference_sheetdjango_reference_sheet
django_reference_sheet
webuploader
 
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
Christopher Adams
 
Django Portfolio Website Workshop (1).pptx
Django Portfolio Website Workshop (1).pptxDjango Portfolio Website Workshop (1).pptx
Django Portfolio Website Workshop (1).pptx
AmaraCostachiu
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
Joaquim Rocha
 
Hands on django part 1
Hands on django part 1Hands on django part 1
Hands on django part 1
MicroPyramid .
 
Projeto-web-services-Spring-Boot-JPA.pdf
Projeto-web-services-Spring-Boot-JPA.pdfProjeto-web-services-Spring-Boot-JPA.pdf
Projeto-web-services-Spring-Boot-JPA.pdf
AdrianoSantos888423
 
Gae Meets Django
Gae Meets DjangoGae Meets Django
Gae Meets Django
fool2nd
 
Django tech-talk
Django tech-talkDjango tech-talk
Django tech-talk
dtdannen
 
Django cheat sheet
Django cheat sheetDjango cheat sheet
Django cheat sheet
Lam Hoang
 
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
makoto tsuyuki
 
Python, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and DjangoPython, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and Django
Sammy Fung
 
Data Migrations in the App Engine Datastore
Data Migrations in the App Engine DatastoreData Migrations in the App Engine Datastore
Data Migrations in the App Engine Datastore
Ryan Morlok
 
Making the Most of Your Gradle Build
Making the Most of Your Gradle BuildMaking the Most of Your Gradle Build
Making the Most of Your Gradle Build
Andres Almiray
 
Django Overview
Django OverviewDjango Overview
Django Overview
Brian Tol
 
django_reference_sheet
django_reference_sheetdjango_reference_sheet
django_reference_sheet
webuploader
 
Ad

Recently uploaded (20)

Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Ad

Django a whirlwind tour

  • 1. Django: A Whirlwind Tour Brad Montgomery Email: [email protected] Twitter: bkmontgomery Friday, November 2, 12
  • 2. Django: Features • Python • ORM: Object-Relational Mapper • MVC-inspired (MVT) • Clean URLs • Huge Community • Worlds Best Documentation Friday, November 2, 12
  • 3. Batteries Included aka: contrib apps • admin • auth • comments • gis • syndication (atom/rss feeds) • sitemaps Friday, November 2, 12
  • 5. Community • 3rd-party, open source apps • django-registration • django-social-auth • django-taggit • django-gravatar2 • django-relationships Friday, November 2, 12
  • 7. So, who’s actually using Django? Friday, November 2, 12
  • 8. Disqus, Instagram, Pintrest, Mozilla, Rdio, Bitbucket, Work for Pie, GiantBomb, The Onion Friday, November 2, 12
  • 9. Projects & Apps • Projects are a collection of applications • Settings • DB Connections • installed apps • Filesystem paths • Command-line tool: manage.py Friday, November 2, 12
  • 10. Projects & Apps $ django-admin.py startproject sampleproject Friday, November 2, 12
  • 11. Projects & Apps sampleproject/ !"" manage.py #"" sampleproject !"" __init__.py !"" settings.py !"" urls.py #"" wsgi.py Friday, November 2, 12
  • 12. Projects & Apps $ python manage.py startapp blog Friday, November 2, 12
  • 13. Projects & Apps sampleproject/ !"" blog    !"" __init__.py    !"" models.py    !"" tests.py    #"" views.py Friday, November 2, 12
  • 14. Models from django.db import models from django.contrib.auth.models import User class Post(models.Model): author = models.ForeignKey(User) title = models.CharField(max_length=128) slug = models.SlugField(max_length=128, unique=True) content = models.TextField() published_on = models.DateTimeField(auto_now_add=True) sampleproject/blog/models.py Friday, November 2, 12
  • 15. syncdb $ python manage.py syncdb Friday, November 2, 12
  • 16. Views from django.shortcuts import render_to_response from django.template import RequestContext from models import Post def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 17. Views from django.shortcuts import render_to_response from django.template import RequestContext from models import Post def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 18. Views from django.shortcuts import render_to_response from django.template import RequestContext from models import Post def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 19. Views from django.shortcuts import render_to_response from django.template import RequestContext from models import Post def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 20. Views from django.shortcuts import render_to_response from django.template import RequestContext from models import Post def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 21. Views from django.shortcuts import render_to_response from django.template import RequestContext from models import Post def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 22. A base template <!DOCTYPE html> <html> <head> <title> {% block title %}{% endblock %} </title> </head> <body> {% block content %}{% endblock %} </body> </html> sampleproject/sampleproject/templates/base.html Friday, November 2, 12
  • 23. A base template <!DOCTYPE html> <html> <head> <title> {% block title %}{% endblock %} </title> </head> <body> {% block content %}{% endblock %} </body> </html> sampleproject/sampleproject/templates/base.html Friday, November 2, 12
  • 24. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 25. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 26. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 27. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 28. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 29. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 30. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 31. A post template {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 32. URL Conf’s • Tie it all together! • Route HTTP requests to views • May also capture values Friday, November 2, 12
  • 33. Root URLConf from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 34. Root URLConf from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 35. Root URLConf from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 36. Root URLConf from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 37. Root URLConf from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 38. Root URLConf from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 39. An HTTP Request Friday, November 2, 12
  • 40. An HTTP Request Friday, November 2, 12
  • 41. An HTTP Request blog/sample-title/ from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 42. An HTTP Request blog/sample-title/ from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^blog/(?P<post_slug>.+)/$', 'blog.views.display_post', name='display_post'), url(r'^admin/', include(admin.site.urls)), ) sampleproject/sampleproject/urls.py Friday, November 2, 12
  • 43. An HTTP Request sample-title def display_post(request, post_slug): post = Post.objects.get(slug=post_slug) template_data = {'post': post} template = "blog/post.html" return render_to_response( template, template_data, context_instance=RequestContext(request) ) sampleproject/blog/views.py Friday, November 2, 12
  • 44. An HTTP Request {% extends "base.html" %} Sample Title {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 45. An HTTP Request {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} Lorem Ipsum... {% block content %} <h1>{{ post.title }}</h1> {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 46. An HTTP Request {% extends "base.html" %} {% block title %} {{ post.title }} {% endblock %} {% block content %} <h1>{{ post.title }}</h1> Nov 3, 2012 {{ post.content|urlize|linebreaks }} <p>Published on: {{ post.published_on|date:"M d, Y" }}</p> {% endblock %} sampleproject/blog/templates/blog/post.html Friday, November 2, 12
  • 47. An HTTP Request Friday, November 2, 12
  • 49. A Typical Stack Linux Friday, November 2, 12
  • 50. A Typical Stack PostgreSQL Linux Friday, November 2, 12
  • 51. A Typical Stack Gunicorn + Django PostgreSQL Linux Friday, November 2, 12
  • 52. A Typical Stack nginx Gunicorn + Django PostgreSQL Linux Friday, November 2, 12
  • 53. A Typical Stack Varnish Memcached nginx RabbitMQ Gunicorn + Django Redis PostgreSQL Linux Friday, November 2, 12
  • 55. Enter: Heroku • Deploy & Scale in the Cloud • Provides on-demand App/DB servers • The Heroku Toolbelt • http://www.heroku.com/ Friday, November 2, 12
  • 56. Deploying to Heroku Do a little bit of setup... $ heroku create Creating app-name... done, stack is cedar http://app-name.herokuapp.com/ | [email protected]:app-name.git Git remote heroku added Friday, November 2, 12
  • 57. Deploying to Heroku $ git push heroku master ... lots of output ... Friday, November 2, 12
  • 58. Deploying to Heroku $ heroku run python manage.py syncdb ... your typical syncdb output ... Friday, November 2, 12
  • 59. Deploying to Heroku Develop locally, then when you want to deploy, just run: $ git push heroku master Friday, November 2, 12
  • 60. Want to Learn More? • Official Django Docs • https://docs.djangoproject.com • *Djangobook http://www.djangobook.com • Find Apps: http://www.djangopackages.com/ • Coming Soon: http://gettingstartedwithdjango.com/ Friday, November 2, 12