a gentle intro to the django framework

20
django python powered MVC framework

Upload: ricardo-soares

Post on 25-May-2015

2.057 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: A gentle intro to the Django Framework

django

python powered MVC framework

Page 2: A gentle intro to the Django Framework

Presentation topics

● why python and why django?● what is MVC?● the M in the django framework● the V in the django framework● and the C in the django framework● django admin

Page 3: A gentle intro to the Django Framework

why python and why django?

#1, why python?● python is a "natural" OO language;● python has functional capabilities;● "batteries included"!!

#2, why django?

● uses python (ahhh!);● interfaces for common actions (dry);● pluggable apps;● you have more time to CREATE!● you had VALUE to you products;

Page 4: A gentle intro to the Django Framework

what is MVC?

A software development pattern where the business logic is separated from the UI.

In web development:

● (M)odel: the business logic/rules off the application (mostly the DB);

● (V)iew: the (x)html rendered and presented to the user;

● (C)ontroller: the handler that receives GET or POST

requests, works over the domain object and retrieves a response to the user;

Page 5: A gentle intro to the Django Framework

what is MVC?

In the Django framework, things are a little bit different...

Welcome to "MTV"!! (Model - Template - View)

Page 6: A gentle intro to the Django Framework

the M in the django framework

Page 7: A gentle intro to the Django Framework

the M in the django framework

Not much different from the other M...

● It holds the business logic/rules;

● It is related with the DB;

● Describes the DB as classes of objects using a mapper (ORM);

● It holds methods to retrieve data;

Page 8: A gentle intro to the Django Framework

the M in the django frameworkExample: from django.db import models

class Company(models.Model): name = models.CharField(_("Company name"), max_length=64) phone = models.CharField("URL", max_length=32) fax = models.CharField("Fax", max_length=32, null=True, blank=True) email = models.EmailField("E-mail", max_length=32, null=True, blank=True) ceos = models.ForeignKey('entities.Ceo')

class Meta: ordering = ['name'] db_table = 'company' verbose_name = _('Company') verbose_name_plural = _('Companies')

# Return company's administrators def get_ceos(self): return self.ceos # Returns an instance in a human-readable format def __unicode__(self): return self.name

Page 9: A gentle intro to the Django Framework

the V in the django framework

Page 10: A gentle intro to the Django Framework

the V in the django framework

A view, in django, has two parts: #1 A callback that:

● is a normal python method that always receive an HTTP request object...

● ... and always returns an HTTP response object;

● describes which data is presented;

Page 11: A gentle intro to the Django Framework

the V in the django framework

#2 An URLconf:

● that is a mapper between url's and the view callbacks;

● that is described by regexes;

Page 12: A gentle intro to the Django Framework

the V in the django framework

We can also include the templates here, since it is intrinsically linked to the view callbacks.

● Django has its own template system/language;

● It is pythonic, but very stricted;

● Organized by tags;

● Focus on how you display data;

● You can write your own set of tags;

Page 13: A gentle intro to the Django Framework

the V in the django frameworkExample of a view:from django.shortcuts import render_to_responsedef property_details(request, id): try: c = {} c.update(csrf(request)) property = Property.objects.get(pk=id) c['property'] = property except Property.DoesNotExist: raise Http404 return render_to_response('properties/property_details.html', c)

Example of an URLconf:urlpatterns = patterns('properties.views', (r'^(?P<id>\d+[a-z]*)', 'property_details'),)

Page 14: A gentle intro to the Django Framework

the V in the django framework

Example of a template:{% extends "base.html" %}{% load i18n %}

{% block highlights %}{% include "horizontal_search.html" %}<div style="margin-top: 25px;"></div>{% endblock %}{% block content %} <div style="padding-left: 9px; padding-right: 6px;"> <div id="text_wrapper"><h4>{% trans "About" %} {{ property.reference }}</h4>{{ property.description }} </div>{% endblock %}

Page 15: A gentle intro to the Django Framework

the C in the django framework

Page 16: A gentle intro to the Django Framework

the C in the django framework

Possibly the most complex part... Basically it's all the django framework! This includes:

● modules that are responsible for user authentication...

● modules that prevents CSRF's...

● that are responsible for the website language (i18n, l7n);

● etc... It's all the machinery between an URLconf and a view. Those modules are called middleware.

Page 17: A gentle intro to the Django Framework

django admin

Page 18: A gentle intro to the Django Framework

django admin

django admin is a very usefull app that allows you to save a lot of time.

● Uses class attributes to create forms;

● Common methods included (add, edit, remove);

● Complete admin interface that can be changed;

● User management;

Page 19: A gentle intro to the Django Framework

django adminDefault objects list

Page 20: A gentle intro to the Django Framework

django adminDefault add form