Mini Curso Django Ii Congresso Academico Ces

Post on 10-May-2015

1,828 views 1 download

Tags:

description

Apresentação usada no mini-curso de Django realizado no 2º Congresso Acadêmico do Cesmac.

transcript

Welcome to the Django!

What's Django?

"Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design." 

from http://www.djangoproject.com/

 "...and not a CMS System."

Origins...

Django Reinhardt

Origins...

Lawrence-Journal World

Origins...

• Pycon 2005 - Adrian Holovaty e Simon Willison• BSD License*• Django Software Foundation - 2008

* http://en.wikipedia.org/wiki/BSD_licenses

www.djangoproject.com

Skills

 

• Convention Over Configuration • Object-Relational Mapping (ORM)• Very useful admin CRUD• Form handling• Elegant URL Design• Template system• Cache system• i18n

   

Principles (...or philosophies)

   • DRY (Don't Repeat Yourself)• Loose coupling • Write less code as possible• Quick development• Explicit is better than implicit

    

...and the best, is

MVC? No... MTV!

MVC vs. MTV

   • Model --> Model• View --> Template• Controller --> View

Overview

Go to the Project!

 • Download

o djangoproject.com/download

• Installo Unzip Django-x.x.tar.gzo python setup.py install

• Or... apt-get install python-django (Debian like OS)

Setting up...

Create a Project...

   • django-admin.py startproject my_project

Setup files

 • __init__.py - indicates a python package

 • manager.py - admin tasks

 • settings.py - project settings

 • urls.py - project urls map

Let's to do something...

• Open settings.py:o DATABASE_ENGINE = 'sqlite3'o DATABASE_NAME = 'myblog.db'o add 'django.contrib.admin'

• Open urls.py:o Uncomment the line: "from django.contrib..."o Uncomment the line: "admin.autodiscover()..."o Uncomment the line: "(r'^admin..."

Development server

   • python manager.py syncdb

 • python manager.py runserver [8000]

Others Servers...

• Development Server • Apache + Mod_Python

 • Apache + FastCGI

Create the app

    • python manage.py startapp my_blog

Setup files

  • init.py - indicates a python package

 • models.py - app domain model

 • views.py - project controller

App x Project

  • App - web app that do something. E.g. XXX

• Project - lot of apps and themselves settings. A project can be a lot of apps, and a app can stay in severals projects

Create the model

  •  Open models.py and edit:

   from django.db import models

class Artigo(models.Model): titulo = models.CharField(max_length=100) conteudo = models.TextField() publicacao = models.DateTimeField()

Setting the model classes to admin

• Open admin.py and edit:    from django.contrib import adminfrom models import Artigo admin.site.register(Artigo)

Add the app to the admin

   • Open settings.py and add: "my_project.blog"

• Re-sync the database

• Re-run the development server

Setting the urls

 • Open the urls.py and edit:

 from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()

from my_blog.models import Artigo

urlpatterns = patterns('', (r'^$', 'django.views.generic.date_based.archive_index', {'queryset': Artigo.objects.all(), 'date_field': 'publicacao'}), (r'^admin/(.*)', admin.site.root),

)

Setting the templates

 • Create templates/blog/artigo_archive.html and edit: 

  <html><body>

<h1>Meu blog</h1>

{% for artigo in latest %}<h2>{{ artigo.titulo }}</h2>

{{ artigo.conteudo }}{% endfor %}

</body></html>

Look your app!

    • http://localhost:8000/

Recap...

   • Django is easy• Django is fun• Django scales• Django is maintainable• Django saves small kittens• It rocks - USE IT! 

Sites powered by Python/Django

Contact/follow us...

leofernandesmo@gmail.comfelipe.buarque@gmail.com

Twitter:@leofernandesmo

@felipe_wally