Django introduction

1,902 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,902
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Django introduction

  1. 1. Introduction to Django Master in Free Software   2009/2010 Joaquim Rocha <jrocha@igalia.com> 3, July 2010
  2. 2. What is it? "Django is a high­level Python Web framework  that encourages rapid development and  clean, pragmatic design." From Django official website Master in Free Software | 2009­2010 2
  3. 3. What is it? 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  Master in Free Software | 2009­2010 3
  4. 4. The framework Object­Relational Mapper Automatic Admin Interface Elegant URL Design Powerful Template System i18n it's amazing...! Master in Free Software | 2009­2010 4
  5. 5. Big community Django has a big community and an extensive list of  Django apps Search for them in http://code.google.com Other interesting websites: * Django sites: http://www.djangosites.org * Django people: http://www.djangopeople.com Master in Free Software | 2009­2010 5
  6. 6. Deployment FastCGI mod_python mod_wsgi ... Master in Free Software | 2009­2010 6
  7. 7. DB Backend Officially supported: PostgreSQL MySQL SQLite Oracle Master in Free Software | 2009­2010 7
  8. 8. Using Django Master in Free Software | 2009­2010 8
  9. 9. Installation Just get a tarball release or checkout the sources: http://djangoproject.com/download Then: # python setup.py install Or: # easy_install django Master in Free Software | 2009­2010 9
  10. 10. Development Master in Free Software | 2009­2010 10
  11. 11. Creating a project $ django­admin.py startproject Project Project     __init__.py     manage.py     settings.py     urls.py Master in Free Software | 2009­2010 11
  12. 12. Running the project $ ./manage.py runserver ...and open your browse at localhost:8000 Master in Free Software | 2009­2010 12
  13. 13. Running the project Master in Free Software | 2009­2010 13
  14. 14. Development Django Projects have Apps Apps are the projects' components Master in Free Software | 2009­2010 14
  15. 15. Creating an App $ ./manage.py startapp my_app my_app     __init__.py     models.py     tests.py     views.py Master in Free Software | 2009­2010 15
  16. 16. Building the database $ ./manage.py syncdb Master in Free Software | 2009­2010 16
  17. 17. Project's configuration Easy configuration in the settings.py file Master in Free Software | 2009­2010 17
  18. 18. Building the database $ ./manage.py syncdb Master in Free Software | 2009­2010 18
  19. 19. Development Django follows the MTV design pattern: Model­Template­View Master in Free Software | 2009­2010 19
  20. 20. Models Models are a series of classes describing  objects They represent the database objects Never touch SQL again! Master in Free Software | 2009­2010 20
  21. 21. Models class Post(models.Model): title = models.CharField(max_length = 500) content = models.TextField() date = models.DateTimeField(auto_now = True) ... Master in Free Software | 2009­2010 21
  22. 22. Views Views are a series of functions that normally  process some models and render HTML It's where the magic happens! How to get all blog posts from the latest 5 days and order them by  descending date? Master in Free Software | 2009­2010 22
  23. 23. 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}) Master in Free Software | 2009­2010 23
  24. 24. Templates Will not let you repeat yourself! Will save designers from the code. Master in Free Software | 2009­2010 24
  25. 25. Templates <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> Master in Free Software | 2009­2010 25
  26. 26. Templates {% extends "base.html" %} {% 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:"B d, Y"| upper }}<h4> <p>{{ post.content }}</p> {% endfor %} {% url project.some_app.views.some_view some arguments %} {% endblock %} Master in Free Software | 2009­2010 26
  27. 27. URLs In Django, the URLs are part of the design! urls.py use regular expressions to match URLs  with Views Master in Free Software | 2009­2010 27
  28. 28. URLs urlpatterns = patterns('Project.some_app.views', (r'^$', 'index'), (r'^posts/(?P<r_id>d+)/$', 'view_latest_posts'), (r'^create/$', 'create'), url(r'^view/post/(?P<p_id>d+)/$', 'view', name = 'view_post'), ) Master in Free Software | 2009­2010 28
  29. 29. Forms Series of classes that represent an HTML form Will let you easily configure the expected  type of the inputs, error messages, labels,  etc... Master in Free Software | 2009­2010 29
  30. 30. Forms class CreatePost(forms.Form): title = forms.CharField(label = "Post Title", max_length = 500, widget = forms.TextInput(attrs={ 'class': 'big_entry' })) content = forms.CharField() tags = forms.CharField(required = False) Master in Free Software | 2009­2010 30
  31. 31. 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, }) Master in Free Software | 2009­2010 31
  32. 32. Forms The quick way: <form action="/create/" method="POST"> {{ form.as_p }} <input type="submit" value="Create" /> </form> Master in Free Software | 2009­2010 32
  33. 33. Where to go from here? Master in Free Software | 2009­2010 33
  34. 34. Django hosts An extensive list is can be found at: http://code.djangoproject.com/wiki/DjangoFriendlyWe bHosts Popular ones: http://www.statopia.com/corporate/blog/2007/aug/05/ PopularDjangoHostingService/ Google's AppEngine is also Django friendly: http://appengine.google.com/ Master in Free Software | 2009­2010 34
  35. 35. Help Django Docs http://docs.djangoproject.com Some books ● Learning Website Development with Django,  Packt ● Practical Django Projects, Apress ● Pro Django, Apress Master in Free Software | 2009­2010 35

×