django, framework python para desenvolvimento web

55
 Framework Python para Framework Python para desenvolvimento web. desenvolvimento web. Django Django Mayron Cachina Mayron Cachina [email protected] [email protected] http://cachina.wordpress.com http://cachina.wordpress.com

Upload: mayron-cachina

Post on 05-Dec-2014

5.769 views

Category:

Technology


8 download

DESCRIPTION

Esse foi o slide de um mini curso que apresentei no FLISOL 2008 que ocorreu no CEFET-RN no dia 26/04/08, infelizmente aconteceram várias coisas e n deu tempo para eu fazer um slide legal, deixei de mostrar muitas coisas, além de n poder mostrar a versão mais nova (0.97), foi instalado no pc a 0.96.1 Visite http://cachina.wordpress.com/2008/04/29/flisol-minicurso-django/ para ver a resenha :D

TRANSCRIPT

   

Framework Python para Framework Python para desenvolvimento web.desenvolvimento web.

DjangoDjango

Mayron CachinaMayron [email protected]@gmail.comhttp://cachina.wordpress.comhttp://cachina.wordpress.com

   

Introdução

● Criado por Adrian Holovaty em 2005● Criado para ser um gerenciado de notícias● Licença BSD¹● O nome Django foi inspirado no músico de jazz 

Django Reinhardt

¹ http://pt.wikipedia.org/wiki/Licen%C3%A7a_BSD

   

● Escrito em Python● Utiliza MVC (Model/View/Controller)● DRY (Don't Repeat Yourself)● Mapeamento Objeto Relacional (ORM)● Interface Administrativa● Sistema de Templates● Internacionalização

Introdução

   

COMEÇANDO...COMEÇANDO...

   

Instalando o django

Download: http://www.djangoproject.com/download/0.96.1/tarball/

Instalação: tar -xzvf Django-0.96.1.tar.gz cd Django-0.96 sudo python setup.py install

   

Criando o Projeto

django-admin startproject flisol

   

Arquivos de configuração

   

● __init__.py Arquivo que indica ao Python que esse diretório vai ser considerado um pacote.

● manage.py Script semelhante ao django-admin.py, para tarefas administrativas do seu projeto.

● settings.py Configurações do projeto.

● urls.py Configurações de url para o projeto.

Arquivos de configuração

   

Servidor de Desenvolvimento

python menager.py runserver 8000

   

Servidor de Desenvolvimento

Validating models...0 errors found

Django version 0.96.1, using settings 'flisol.settings'Development server is running at http://127.0.0.1:8000/Quit the server with CONTROL-C.

   

http://localhost:8000/

   

Servidores

● Desenvolvimento● Apache¹ + Mod_Python²● Apache + FastCGI³

¹ http://www.apache.org² http://www.modpython.org/³ http://www.fastcgi.com/

   

Criando a aplicação

python manage.py startapp mural

   

Criando a aplicação

   

●   __init__.py Arquivo que indica ao Python que esse   diretório vai ser considerado um  pacote.

●   models.py Arquivo onde você define seus modelos.

●   views.py Arquivo onde você define as views do seu projeto.

Criando a aplicação

   

Aplicação X Projeto

  Uma  app  é  uma  aplicação  web  que  faz  algo. Ex:  sistema  de  notícias,  enquetes,  eventos, favoritos.

Um  projeto  é  uma  coleção  e  configuração  de apps  para  um  site  em  particular.  Um  projeto pode contar várias apps e uma app pode estar contida em vários projetos.

   

Configurando o ProjetoConfigurando o Projeto

   

Criando o Model

   

Criando o Model

from django.db import models

class Mural(models.Model):nome = models.CharField(maxlength=40)email = models.EmailField()mensagem = models.TextField()hora = models.DateTimeField(auto_now=True)site = models.URLField(verify_exists=False)

def __str__(self):return self.nome

   

Criando a base de dados

# sqlite3 .../banco.db

sqlite> .databasesseq name file --- --------------- ------------------------------------0 main ..../flisol/banco.db

   

Configurando o settings.py

. . .

DATABASE_ENGINE = 'sqlite3'DATABASE_NAME = '/../'

. . .

   

Configurando o settings.py

. . .

TIME_ZONE = 'America/Brazil'

. . .

LANGUAGE_CODE = 'pt-br'

. . .

TEMPLATE_DIRS = ( '$HOME/flisol/template' # $HOME, será sua pasta /)

. . .

   

Criando a aplicação

. . .

INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin','django.contrib.admin', 'flisol.mural''flisol.mural')

. . .

   

• django.contrib.auth

Sistema de autenticação.

• django.contrib.contenttypes

Framework para content-types • django.contrib.sessions

Framework para sessões.

Frameworks Utilizados

   

Criando a base de dados

python manage.py syncdb

   

Creating table auth_messageCreating table auth_groupCreating table auth_userCreating table auth_permissionCreating table django_content_typeCreating table django_sessionCreating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.Would you like to create one now? (yes/no): yesUsername (Leave blank to use 'mayron'): mayronE-mail address: [email protected]: Password (again): Superuser created successfully.Installing index for auth.Message modelInstalling index for auth.Permission model

Criando a base de dados

   

DB APIDB API

   

Usando a DB-API

python manage.py shell

   

Usando a DB-API

>>> from flisol.mural.models import Mural

>>> Mural.objects.all()[]

>>>

   

>>> a = Mural(nome='Mayron', email='[email protected]', mensagem='ola mundo')

>>> a.save()

Usando a DB-API

   

>>> a.id1>>> a.mensagem'ola mundo'

Usando a DB-API

   

>>> b = Mural(nome='FLISOL', email='[email protected]', mensagem='LINUX INSIDE')

>>> b.save()

Usando a DB-API

   

>>> b.id2>>> b.mensagem'LINUX INSIDE'

Usando a DB-API

   

>>> Mural.objects.all()[<Mural: Mayron>, <Mural: FLISOL>]

Usando a DB-API

   

>>> Mural.objects.all().count()2

>>> f = Mural.objects.filter(id=1)[<Mural: Mayron>]

>>> f.delete()

>>> Mural.objects.all()[<Mural: FLISOL>]

   

ADMINADMIN

   

● Adicionar no settings.py em Installed_App● Adicionar Classe “Admin” ao model● Descomentar a linha relacionada no arquivo 

url.py

Admin do Django

   

Arquivo settings.py

INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin','django.contrib.admin', 'flisol.mural',)

   

Arquivo url.py

from django.conf.urls.defaults import *

urlpatterns = patterns('', # Example: # (r'^flisol/', include('flisol.foo.urls')),

# Uncomment this for admin:# (r'^admin/', include('django.contrib.admin.urls')),# (r'^admin/', include('django.contrib.admin.urls')),# Descomentar linha a cima# Descomentar linha a cima)

   

from django.db import models

class Mural(models.Model):nome = models.CharField(maxlength=40)email = models.EmailField()mensagem = models.TextField()hora = models.DateTimeField(auto_now=True)site = models.URLField(verify_exists=False)

def __str__(self):return self.nome

class Admin:class Admin:passpass

Admin do Django – Liberando

   

from django.db import models

class Mural(models.Model):....

class Admin:class Admin:fields=(None, {'fields':('email','nome')}),fields=(None, {'fields':('email','nome')}),

#Modifica o formulário#Modifica o formulário

Admin do Django – Liberando

   

URLURL

   

● Crie suas URLs de forma flexível e sem limitações

● Facilita criar URLs limpas e elegantes● Usando Expressão regulares

Urls

   

Urls

/flisol/2008/minicursos/django//flisol/2008/minicursos/django/

   

Urls

/aluno/joaquim-jose-da-silva-xavier/aluno/joaquim-jose-da-silva-xavier

   

from django.conf.urls.defaults import *

urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')),

(r'^mural/listar/$', 'flisol.mural.views.listar'),(r'^mural/$', 'flisol.mural.views.index'),

)

Urls

   

TEMPLATETEMPLATE

   

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Exemplo Flisol</title> </head>

<body>

Olá, {{ nome }}

<body>

Template

Salvar como home.html na pasta ../templates/

   

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Exemplo Flisol</title> </head>

<body>

{% for registro in registros %}{{ registro.nome }} <br/>{{registro.email }} <br/>

...{% endfor %}

<body>

Template - Listar

Salvar como listar.html na pasta ../templates/

   

VIEWVIEW

   

# -*- coding: utf-8 -*- from django.shortcuts import render_to_response, get_object_or_404from flisol.mural.models import *

View

views.py

   

def index(request):return render_to_response('home.html', {'nome':request.GET['nome'])

View

   

def listar(request):c = Mural.objects.all()return render_to_response('listar.html',{

'registros':c,})

View

   

● Agradecimentos:

– Andrews Medina.

● Referência:– http://www.djangoproject.com/documentation/0.96/

FIM

   

Mayron CachinaE-mail: [email protected]

http://cachina.wordpress.com