Django is a Python-based MVC web framework. It follows an MTV pattern where the Model represents the business logic and database, the Template displays data, and the View connects Models and Templates by handling requests and returning responses. The presentation discusses why use Python and Django, what MVC is, and each component of MTV in Django - Models define database schemas, Views handle requests and return responses using Templates, and the framework handles common tasks like authentication, internationalization, and more. It also introduces Django Admin which automatically generates interfaces to manage database objects.
2. 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
3. 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;
4. 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;
5. what is MVC?
In the Django framework, things are a little bit different...
Welcome to "MTV"!!
(Model - Template - View)
7. 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;
8. the M in the django framework
Example:
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
10. 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;
11. 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;
12. 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;
13. the V in the django framework
Example of a view:
from django.shortcuts import render_to_response
def 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'),
)
14. 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 %}
16. 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.
18. 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;