SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
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

Más contenido relacionado

Similar a Django Intro

BackboneJS and friends
BackboneJS and friendsBackboneJS and friends
BackboneJS and friends
Scott Cowan
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワーク
Takatsugu Shigeta
 
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
Mohd Manzoor Ahmed
 

Similar a 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
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

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