mini curso de django

46
DJANGO Muito prazer em conhecer- te! Prof. Msc. Rosenclever Lopes Gazoni [email protected]

Upload: rosenclever

Post on 14-May-2015

3.031 views

Category:

Technology


4 download

DESCRIPTION

Slides do mini-curso de django realizado no XV Seminário de Tecnologia da Informação do Unifoa. Professor Rosenclever Lopes Gazoni

TRANSCRIPT

Page 1: Mini curso de django

DJANGOMuito prazer em

conhecer-te!Prof. Msc. Rosenclever Lopes Gazoni

[email protected]

Page 2: Mini curso de django

Sumário• O que é o Django?• Instalação• Estrutura de uma aplicação Django• Criação de um projeto• Conhecendo os arquivos Básicos de Configuração• Executando o servidor• Criando uma view• Usando Templates• Criando uma app• Configurando o banco de dados• Criando models• Ativando uma app• Shell python• Interface de Administração do Django• Criando artigos no site

Page 3: Mini curso de django

O que é o Django?• Framework Web de alto nível escrito em Python• Usa linguagem interpretada• A identação delimita os blocos• Possui mapeamento objeto relacional• Interface administrativa automática• Projeto elegante de URL• Sistema de templates• Fácil Internacionalização

Page 4: Mini curso de django

Instalação• Windows

1. Faça o download dos arquivos necessários• Python – http://python.org/ftp/python/2.7.1/python-2.7.1.msi • Django – http://www.djangoproject.com/download/1.3/tarball

/2. Após instalar o python modifique as váriáveis ambiente:

Page 5: Mini curso de django

Instalação

Page 6: Mini curso de django

Instalação• Descompactar o Django• cd c:\Django1.3• python setup.py install• Teste:• No prompt de comando execute o interpretador python:

• python

• No interpretador python digite o comando para verificar a instalação do Django:• import django

• Se não houver erro a instalação foi um sucesso!

Page 7: Mini curso de django

Instalação

Page 8: Mini curso de django

Instalação• Linux e iOS• Python – Já é nativo• Faça o download do Django

• Django - - http://www.djangoproject.com/download/1.3/tarball/

• Execute os comandos• tar –xvzf Django-1.3.tar.gz• cd Django1.3• sudo python setup.py install

• Teste• No prompt de shell execute o interpretador python:

• python

• No interpretador python digite o comando para verificar a instalação do Django:• import django

• Se não houver erro a instalação foi um sucesso!

Page 9: Mini curso de django

Estrutura de uma aplicação Django

Model ViewTemplate

Page 10: Mini curso de django

Criando um Projeto

• Python c:\Python25\Scripts\django-admin.py startproject jornal• jornal/• __init__• manage.py• settings.py• urls.py

Page 11: Mini curso de django

Executando o Servidor• python manage.py runserver

Page 12: Mini curso de django

Criando uma app

• python manage.py startapp redacao• redacao/• __init__• models.py• tests.py• views.py

Page 13: Mini curso de django

Manipulando Templates• Crie a pasta templates dentro da pasta jornal• Crie o template (base.html) básico para padronizar as páginas

do site:<html><head> <title>{% block title %}{% endblock %}</title></head><body> <marquee>Aprendendo Django!</marquee> {% block content %}{% endblock %}</body></html>

Page 14: Mini curso de django

Manipulando Templates• Crie o template (index.html) para a página inicial:

{% extends "base.html" %}

{% block title %} Django, muito prazer em conhecer-te!{% endblock %}

{% block content %} <h1 align="center">Bem Vindo!</h1>{% endblock %}

Page 15: Mini curso de django

Manipulando Templates• Organize suas configurações (settings.py):import osPROJECT_DIR = os.path.dirname(__file__)

TEMPLATE_DIRS = (os.path.join(PROJECT_DIR, 'templates'),

)

Page 16: Mini curso de django

Criando uma View• Na pasta redacao modifique o arquivo views.py:

from django.shortcuts import render_to_response

def homepage(request): return render_to_response('index.html')

Page 17: Mini curso de django

Ativando uma app• Edite o arquivo settings.py:INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', # Uncomment the next line to enable the admin: # 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', 'redacao',)

Page 18: Mini curso de django

URLs Ricas• Modifique o arquivo urls.py acrescentando a linha:

url(r'^$', 'redacao.views.homepage', name='homepage'),

• Execute novamente o servidor e verifique o browser:

Page 19: Mini curso de django

Fluxo Básico

Browser urls.py

views.pyTemplates settings.py

Page 20: Mini curso de django

O Poder do ORM

Page 21: Mini curso de django

Configurando o Banco de Dados• Modifique o arquivo settings.py:import osPROJECT_DIR = os.path.dirname(__file__)

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3’ 'NAME': os.path.join(PROJECT_DIR, 'dbJornal.db'), ...}}

Page 22: Mini curso de django

Criando Models• Edite o arquivo models.py da pasta redacao:class Reporter(models.Model): full_name = models.CharField(max_length=70)

def __unicode__(self): return self.full_name

class Article(models.Model): pub_date = models.DateTimeField() headline = models.CharField(max_length=200) content = models.TextField() reporter = models.ForeignKey(Reporter)

def __unicode__(self): return self.headline

Page 23: Mini curso de django

Atualizando as configurações

python manage.py syncdbUsername=adminPassword=admin

Page 24: Mini curso de django

Atualizando as configurações

Page 25: Mini curso de django

Um shell muito poderoso

Page 26: Mini curso de django

Shell Python• Digite o comado “python manage.py shell” no prompt para

acessar o shell:

Page 27: Mini curso de django

Shell Python

Page 28: Mini curso de django

Shell Python

Page 29: Mini curso de django

Shell Python• Criando um artigo e navegando entre os objetos:

Page 30: Mini curso de django

Interface de Administração

Page 31: Mini curso de django

Interface de Administração• Em settings.py na seção INSTALLED_APPS, retire o comentário

da linha: 'django.contrib.admin',

• Em urls.py retire o comentário das linhas:from django.contrib import adminadmin.autodiscover()(r'^admin/', include(admin.site.urls)),

• Crie um arquivo admin.py em redacao com as linhas:import modelsfrom django.contrib import adminadmin.site.register(models.Article)

Page 32: Mini curso de django

Interface de Adminstração• Execute o servidor• Acesse o endereço• http://127.0.0.1:8000/admin

Page 33: Mini curso de django

forms, views e templates

Page 34: Mini curso de django

Criando Artigos no Site• Na pasta redacao crie o arquivo forms.py:from django import formsfrom redacao.models import Reporter, Article

class ArtigoForm(forms.ModelForm): class Meta: model = Article

Page 35: Mini curso de django

Criando artigos no site• Modifique o arquivo views.py da pasta redação:

def edicao(request): if request.method == 'POST': return gravar(request) else: return novo(request)

Page 36: Mini curso de django

Criando artigos no site• Modifique o arquivo views.py da pasta redação:

from django.shortcuts import render_to_responsefrom django.template import RequestContextfrom redacao.forms import ArtigoForm...def novo(request): form = ArtigoForm() context = RequestContext(request, {'form': form}) return render_to_response('novoArtigo.html', context)

Page 37: Mini curso de django

Criando artigos no site• Crie a pasta templates em redacao e nela o arquivo

novoArtigo.html:{% extends 'base.html' %}{% block content %} <h1>Novo Artigo</h1> {{ form.non_field_errors }} <form action="." method="POST"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Enviar!" class="button"> </form>

<p><strong><a href="{% url homepage %}">Principal</a></strong>

{% endblock content %}

Page 38: Mini curso de django

Criando Artigos no Site• Deixe as “coisas” fáceis de encontrar:• Modifique o arquivo urls.py da pasta jornal acrescentando a

linha:

(r'^edicao/', include('redacao.urls', namespace='redacao')),

• Crie o arquivo urls.py na pasta redacao acrescente as linhas:

from django.conf.urls.defaults import *

urlpatterns = patterns('redacao.views', url(r'^$', 'edicao', name='edicao'), url(r'^(\d+)/sucesso/$', 'success', name='success'),)

Page 39: Mini curso de django

Criando Artigos no Site• O que temos até agora:

Mas ainda não funciona!!!

Page 40: Mini curso de django

Criando Artigos no Site• Modifique o arquivo views.py da pasta redacao:

from redacao.models import Reporter, Articlefrom django.core.urlresolvers import reversefrom django.shortcuts import render_to_response, get_object_or_404from django.http import HttpResponseRedirect....

Page 41: Mini curso de django

Criando Artigos no Site• Modifique o arquivo views.py da pasta redacao:

def gravar(request): form = ArtigoForm(request.POST)

if not form.is_valid(): context = RequestContext(request, {'form': form}) return render_to_response('index.html', context)

artigo = form.save() return HttpResponseRedirect(reverse('redacao:success',

args=[ artigo.pk ]))

Page 42: Mini curso de django

Criando Artigos no Site• Modifique o arquivo views.py da pasta redacao:

def success(request, id): artigo = get_object_or_404(Article, pk=id) context = RequestContext(request, {'artigo': artigo}) return render_to_response('success.html', context)

Page 43: Mini curso de django

Criando Artigos no Site• Na pasta templates de redacao, crie o arquivo success.html

{% extends 'base.html' %}{% block content %}<p>Parabéns {{ artigo.reporter }},</p><p>seu artigo {{ artigo.headline }} foi publicado em

{{ artigo.pub_date|date:"d/m/Y" }}.</p>

<p><strong><a href="{% url homepage %}">Principal</a></strong>&nbsp;

<strong><a href="{% url redacao:edicao %}">Registre outro Artigo!</a></strong></p>

{% endblock content %}

Page 44: Mini curso de django

Fluxo Atual

Page 45: Mini curso de django

Obrigado!

Page 46: Mini curso de django

Referências• Django Project - http://djangoproject.com• Developers List - http://groups.google.com.br/group/django-

developers• Users List - http://groups.google.com.br/group/django-users

• Django Brasil - http://djangobrasil.org• Lista de Usuários - http://groups.google.com/group/django-

brasil/• Welcome to the django (www.henriquebastos.net)• Aprendendo django no planeta terra

(www.aprendendodjango.com)