Este documento descreve um workshop sobre o framework Django. Apresenta os principais conceitos como arquitetura MVT, desenvolvimento de modelos, administração, URLs, views e templates. Inclui também exemplos de configuração inicial de um projeto, gestão de base de dados, autenticação e extensão de templates.
18. Iniciar a shell
manage.py shell
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
25. Tipos de campos de objectos
from django.db import models
class NomeDoObjecto(models.Model):
nome = models.CharField(max_length=200)
data = models.DateTimeField('Data de criação')
custo = models.DecimalField(max_digits=9,
decimal_places=2)
26. Tipos de campos de objectos
...
email = models.EmailField()
comprovativo = models.FileField(upload_to='uploads')
foto = models.ImageField(upload_to='imagens')
anos = models.IntegerField('Anos de experiência')
descricao = models.TextField('Descrição')
link = models.URLField(verify_exists=True)
27. Tipos de campos de objectos
...
criador = models.ForeignKey(User,
verbose_name='Indivíduo')
amigos = models.ManyToManyField(User)
33. Configurar administração
admin.py:
class LivroAdmin(admin.ModelAdmin):
# Campos apresentados na listagem
list_display = ('titulo', 'autor', 'dono', 'isbn',)
# Campos pesquisáveis
search_fields = ('titulo', 'autor', 'descricao')
# Ordenar por estes campos
ordering = ('titulo',)
admin.site.register(Livro, LivroAdmin)
34. Configurar administração
Outras opções:
• Remover campos
• Alterar a ordem dos campos
• Retirar obrigatoriedade de preenchimento
• Definir detalhes do layout da página
• ...
37. URLs
urls.py:
urlpatterns = patterns('',
Variável Tipo de dados
(r'^users/(?P<username>w+)/$', 'biblioteca.views.user_view'),
Link View
)
>> http://localhost:8000/users/xpto
38. URLs
Tipos de dados:
w – Caracter alphanumérico
d – Número
. – Qualquer caracter ou espaço
Quantificadores:
? – 0 ou 1 caracter
+ – 1 ou mais caracteres
* - 0 ou mais caracteres
39. View
views.py:
@login_required # Obrigar a fazer login
Variável
def user_view(request, username):
user = User.objects.get(username=username)
return render(request,
'detalhe_user.html',
{'user': user})