Django, Framework Python para desenvolvimento web
-
Upload
mayron-cachina -
Category
Technology
-
view
5.768 -
download
8
description
Transcript of Django, Framework Python para desenvolvimento web
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
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
● __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
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.
Servidores
● Desenvolvimento● Apache¹ + Mod_Python²● Apache + FastCGI³
¹ http://www.apache.org² http://www.modpython.org/³ http://www.fastcgi.com/
● __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.
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
. . .
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
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
>>> a = Mural(nome='Mayron', email='[email protected]', mensagem='ola mundo')
>>> a.save()
Usando a DB-API
>>> b = Mural(nome='FLISOL', email='[email protected]', mensagem='LINUX INSIDE')
>>> b.save()
Usando a DB-API
>>> Mural.objects.all().count()2
>>> f = Mural.objects.filter(id=1)[<Mural: Mayron>]
>>> f.delete()
>>> Mural.objects.all()[<Mural: FLISOL>]
● 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
● Crie suas URLs de forma flexível e sem limitações
● Facilita criar URLs limpas e elegantes● Usando Expressão regulares
Urls
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
<!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/
# -*- coding: utf-8 -*- from django.shortcuts import render_to_response, get_object_or_404from flisol.mural.models import *
View
views.py
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