SlideShare a Scribd company logo
1 of 39
Download to read offline
Introduction to Django
    Master en Software Libre Caixanova

              May 22nd 2009
whoami


●   Portuguese since 1985
●   GTK+ developer
●   Proud Pythonista
●   Djangonaut since 2007
●   Igalian since 2008
And if you insist... http://www.joaquimrocha.com



                       MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
My Latest Django Project




               Rancho
http://www.getrancho.com




   MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
What's Django




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
What's Django?



quot;Django is a high-level Python Web framework
that encourages rapid development and clean,
pragmatic design.quot;
From Django official website




                               MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Young But Strong



●   Internal project of Lawrence Journal-World in
    2003
●   Should help journalists meet fast deadlines
●   Should not stand in the journalists' way
●   Got its name after the famous guitarrist Django
    Reinhardt


                 MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
The Framework


●   Object-Relational Mapper
●   Automatic Admin Interface
●   Elegant URL Design
●   Powerful Template System
●   i18n
it's amazing...!



                   MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
MTV




Model-Template-View

●   Model: What things are
●   Templates: How things are presented
●   Views: How things are processed


                MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Deployment



●   FastCGI
●   mod_python
●   mod_wsgi
●   ...



                 MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
DB Backend



●   PostgreSQL
●   MySQL
●   SQLite
●   Oracle



                 MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Big Community



●   Django People:
     –    http://djangopeople.net
●   Django Pluggables:
     –    http://djangopluggables.com
●   Django Sites:
     –    http://www.djangosites.org
●   ...


                          MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Using Django




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Installation


Just get a tarball release or checkout the sources:
   http://www.djangoproject.com/download/


Then:
   # python setup.py install


... yeah, that it!

                       MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Development




Django Projects have applications




        MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Project



$ django-admin.py startproject Project

               Project/
                 __init__.py
                 manage.py
                 settings.py
                 urls.py


       MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Project


Does it work?


                $ ./manage.py runserver




                MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Project




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Applications

Apps are the project's components

          $ ./manage.py startapp recipe

  recipe/
     __init__.py
     models.py
     tests.py
     views.py


             MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Configuration




        settings.py
      Easy configuration




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Building The Database




$ ./manage.py syncdb



  MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Models

models.py, series of classes describing objects




Represent the database objects.
Never touch SQL again!




                            MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Models



class Post(models.Model):
   title = models.CharField(max_length = 500)
   content = models.TextField()
   date = models.DateTimeField(auto_now = True)
    ...




                 MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Views

views.py, series of functions that will normally process some models and render HTML




                           Where the magic happen!



        How to get all blog posts from the latest 5 days and order them by
                                      descending date?



                           MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Views

import datetime


def view_latest_posts(request):
    # Last 5 days
    date = datetime.datetime.now() -
                       datetime.timedelta(5)
    posts = Post.objects.filter(date__gte =
                                date).order_by('-date')

   return render_to_response('posts/show_posts.html',
                             {'posts': posts})



                  MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Template




 Will let you not repeat yourself!

Will save designers from the code.




       MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Template


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




              MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Template

{% extends quot;base.htmlquot; %}

{% block title %}Homepage{% endblock %}

{% block content %}
  <h3>This will be some main content</h3>

 {% for post in posts %}
   <h4>{{ post.title }} on {{ post.date|date:quot;B d, Yquot;|upper }}<h4>

   <p>{{ post.content }}</p>
 {% endfor %}

 {% url project.some_app.views.some_view some arguments %}

{% endblock %}



                     MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
URLs




In Django, URLs are part of the
            design!



       MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
URLs

urls.py use regular expressions to match URLs with views


urlpatterns = patterns('Project.some_app.views',
    (r'^$', 'index'),

    (r'^posts/(?P<r_id>d+)/$', 'view_latest_posts'),

    (r'^create/$', 'create'),
)




                           MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Forms

forms.py, series of classes that represent an HTML form




Will let you easily configure the expected type of the
inputs, error messages, labels, etc...




                           MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Forms


class CreatePost(forms.Form):
  title = forms.CharField(label = quot;Post Titlequot;,
                           max_length = 500,
              widget = forms.TextInput(attrs={
                             'class': 'big_entry'
                              }))
  content = forms.CharField()
  tags = forms.CharField(required = False)




                MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Forms

def create_post(request):
  if request.method == 'POST':
    form = CreatePost(request.POST)
    if form.is_valid():
        # Create a new post object with data
        # from form.cleaned_data
        return HttpResponseRedirect('/index/')
  else:
    form = CreatePost()

return render_to_response('create.html', {
                           'form': form,
                           })

                 MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Forms


The quick way...


<form action=quot;/create/quot; method=quot;POSTquot;>
  {{ form.as_p }}
  <input type=quot;submitquot; value=quot;Createquot; />
</form>



                   MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Performance




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
Performance




For those who doubt...

http://www.alrond.com/en/2007/jan/25/performance-test-of-6-leading-
frameworks/




                         MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
HELP!




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
HELP!

Django Docs

           http://docs.djangoproject.com

Some books

●   Learning Website Development with Django,
    Packt
●   Practical Django Projects, Apress
●   Pro Django, Apress
                MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
End




  Thank you!
       Questions?




MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com

More Related Content

Similar to Django Intro

Pwa, separating the features from the solutions
Pwa, separating the features from the solutions Pwa, separating the features from the solutions
Pwa, separating the features from the solutions Sander Mangel
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
BackboneJS and friends
BackboneJS and friendsBackboneJS and friends
BackboneJS and friendsScott Cowan
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワークTakatsugu Shigeta
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosIgor Sobreira
 
Week 8
Week 8Week 8
Week 8A VD
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVCMohd Manzoor Ahmed
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Cyrille Le Clerc
 
Bubbles and Trees with jQuery
Bubbles and Trees with jQueryBubbles and Trees with jQuery
Bubbles and Trees with jQuerywesthoff
 
Developing jQuery Plugins with Ease
Developing jQuery Plugins with EaseDeveloping jQuery Plugins with Ease
Developing jQuery Plugins with Easewesthoff
 
Developing Sakai 3 style tools in Sakai 2.x
Developing Sakai 3 style tools in Sakai 2.xDeveloping Sakai 3 style tools in Sakai 2.x
Developing Sakai 3 style tools in Sakai 2.xAuSakai
 
User story slicing exercise
User story slicing exerciseUser story slicing exercise
User story slicing exercisePaulo Clavijo
 
Presentasi seminar it amikom
Presentasi seminar it amikomPresentasi seminar it amikom
Presentasi seminar it amikomMelwin Syafrizal
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSPablo Godel
 

Similar to Django Intro (18)

Pwa, separating the features from the solutions
Pwa, separating the features from the solutions Pwa, separating the features from the solutions
Pwa, separating the features from the solutions
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
BackboneJS and friends
BackboneJS and friendsBackboneJS and friends
BackboneJS and friends
 
Schoology vs baabtra
Schoology vs baabtraSchoology vs baabtra
Schoology vs baabtra
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワーク
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazos
 
Week 8
Week 8Week 8
Week 8
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC3-TIER ARCHITECTURE IN ASP.NET MVC
3-TIER ARCHITECTURE IN ASP.NET MVC
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
 
Bubbles and Trees with jQuery
Bubbles and Trees with jQueryBubbles and Trees with jQuery
Bubbles and Trees with jQuery
 
Developing jQuery Plugins with Ease
Developing jQuery Plugins with EaseDeveloping jQuery Plugins with Ease
Developing jQuery Plugins with Ease
 
Developing Sakai 3 style tools in Sakai 2.x
Developing Sakai 3 style tools in Sakai 2.xDeveloping Sakai 3 style tools in Sakai 2.x
Developing Sakai 3 style tools in Sakai 2.x
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
 
User story slicing exercise
User story slicing exerciseUser story slicing exercise
User story slicing exercise
 
Presentasi seminar it amikom
Presentasi seminar it amikomPresentasi seminar it amikom
Presentasi seminar it amikom
 
Magento Presentation Layer
Magento Presentation LayerMagento Presentation Layer
Magento Presentation Layer
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 

Recently uploaded

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Recently uploaded (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Django Intro

  • 1. Introduction to Django Master en Software Libre Caixanova May 22nd 2009
  • 2. whoami ● Portuguese since 1985 ● GTK+ developer ● Proud Pythonista ● Djangonaut since 2007 ● Igalian since 2008 And if you insist... http://www.joaquimrocha.com MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 3. My Latest Django Project Rancho http://www.getrancho.com MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 4. What's Django MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 5. What's Django? quot;Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.quot; From Django official website MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 6. Young But Strong ● Internal project of Lawrence Journal-World in 2003 ● Should help journalists meet fast deadlines ● Should not stand in the journalists' way ● Got its name after the famous guitarrist Django Reinhardt MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 7. The Framework ● Object-Relational Mapper ● Automatic Admin Interface ● Elegant URL Design ● Powerful Template System ● i18n it's amazing...! MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 8. MTV Model-Template-View ● Model: What things are ● Templates: How things are presented ● Views: How things are processed MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 9. Deployment ● FastCGI ● mod_python ● mod_wsgi ● ... MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 10. DB Backend ● PostgreSQL ● MySQL ● SQLite ● Oracle MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 11. Big Community ● Django People: – http://djangopeople.net ● Django Pluggables: – http://djangopluggables.com ● Django Sites: – http://www.djangosites.org ● ... MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 12. Using Django MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 13. Installation Just get a tarball release or checkout the sources: http://www.djangoproject.com/download/ Then: # python setup.py install ... yeah, that it! MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 14. Development Django Projects have applications MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 15. Project $ django-admin.py startproject Project Project/ __init__.py manage.py settings.py urls.py MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 16. Project Does it work? $ ./manage.py runserver MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 17. Project MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 18. Applications Apps are the project's components $ ./manage.py startapp recipe recipe/ __init__.py models.py tests.py views.py MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 19. Configuration settings.py Easy configuration MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 20. Building The Database $ ./manage.py syncdb MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 21. Models models.py, series of classes describing objects Represent the database objects. Never touch SQL again! MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 22. Models class Post(models.Model): title = models.CharField(max_length = 500) content = models.TextField() date = models.DateTimeField(auto_now = True) ... MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 23. Views views.py, series of functions that will normally process some models and render HTML Where the magic happen! How to get all blog posts from the latest 5 days and order them by descending date? MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 24. Views import datetime def view_latest_posts(request): # Last 5 days date = datetime.datetime.now() - datetime.timedelta(5) posts = Post.objects.filter(date__gte = date).order_by('-date') return render_to_response('posts/show_posts.html', {'posts': posts}) MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 25. Template Will let you not repeat yourself! Will save designers from the code. MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 26. Template <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 27. Template {% extends quot;base.htmlquot; %} {% block title %}Homepage{% endblock %} {% block content %} <h3>This will be some main content</h3> {% for post in posts %} <h4>{{ post.title }} on {{ post.date|date:quot;B d, Yquot;|upper }}<h4> <p>{{ post.content }}</p> {% endfor %} {% url project.some_app.views.some_view some arguments %} {% endblock %} MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 28. URLs In Django, URLs are part of the design! MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 29. URLs urls.py use regular expressions to match URLs with views urlpatterns = patterns('Project.some_app.views', (r'^$', 'index'), (r'^posts/(?P<r_id>d+)/$', 'view_latest_posts'), (r'^create/$', 'create'), ) MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 30. Forms forms.py, series of classes that represent an HTML form Will let you easily configure the expected type of the inputs, error messages, labels, etc... MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 31. Forms class CreatePost(forms.Form): title = forms.CharField(label = quot;Post Titlequot;, max_length = 500, widget = forms.TextInput(attrs={ 'class': 'big_entry' })) content = forms.CharField() tags = forms.CharField(required = False) MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 32. Forms def create_post(request): if request.method == 'POST': form = CreatePost(request.POST) if form.is_valid(): # Create a new post object with data # from form.cleaned_data return HttpResponseRedirect('/index/') else: form = CreatePost() return render_to_response('create.html', { 'form': form, }) MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 33. Forms The quick way... <form action=quot;/create/quot; method=quot;POSTquot;> {{ form.as_p }} <input type=quot;submitquot; value=quot;Createquot; /> </form> MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 34. Performance MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 35. Performance For those who doubt... http://www.alrond.com/en/2007/jan/25/performance-test-of-6-leading- frameworks/ MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 36. MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 37. HELP! MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 38. HELP! Django Docs http://docs.djangoproject.com Some books ● Learning Website Development with Django, Packt ● Practical Django Projects, Apress ● Pro Django, Apress MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com
  • 39. End Thank you! Questions? MSWL Caixanova · Vigo · May 22nd 2009 | Joaquim Rocha | jrocha@igalia.com