Your SlideShare is downloading. ×
0
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Desenvolvimento web usando django
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desenvolvimento web usando django

1,733

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,733
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Apresentar o básico do framework para que vocês conheçam melhor. Implementar uma aplicação para melhor entender o processo de desenvolvimento. Não adianta sair falando um monte de características e não mostrar nada muito real.
  • Meu nome.
    Meu twitter. Maneira mais rápida de falar comigo.
  • Email para contato.
  • Vivemos num mundo tecnologico. Muita gente aqui usa a tecnologia com frequencia e muitos também trabalham com tecnologia. Posso dizer que a gente respira tecnologia.
  • Isso tudo é tão normal pra gente, usar um computador, um celular, carro, geladeira, etc. Que se tornou algo quase natural.
    Pra que a tecnologia? A gente não faz essa pergunta com frequencia.
  • É para isso? Um desenvolvedor pode achar o máximo uma aplicação ter um montão de funcionalidades. Um usuário vai achar isso um inferno, ele não consegue achar com facilidade o que deseja.
  • Eu estava conversando com alguém de outra área. Ela afirmou não gostar muito de tecnologia e achar difícil. Depois de um certo tempo ela soltou uma frase: “a tecnologia não deveria facilitar a vida das pessoas?”.

    Exato! Deveria ser óbvio para gente, mas não é. Ninguém se questiona.
  • Vocês sabem o que é isso?

    Um rádio. Sem botões. Seu manual poderia ter duas linhas.
    1 – Para controlar o volume puxe a parte de cima do rádio verticalmente
    2 – Para sintonizar gire.

    É isso. Muito simples. O nome desse produto é Hidden Radio.
  • As pessoas querem tecnologia para usar, uma ferramenta que facilite sua vida.

    Um artista criando desenhos digitais.
  • Uma professora usando um quadro eletronico, pois é mais fácil apresentar imagens ricar e interagir com elas.
  • Essa máquina facilita infinitamente a colheita. Imaginem fazer tudo manualmente.
  • E nós desenvolvedores?

    Nós criamos tecnologia. Mas nós usamos tecnologia para criar tecnologia. O que a gente usa não deveria ser dificil, deveria facilitar nossa vida.
  • Quando eu conheci Python eu comecei a não gostar de várias outras linguagens. Eu sempre me questionava por que tinha que ser dificil daquele jeito.

    Python é um tipo de tecnologia que facilita muito a vida do programador. Hoje eu posso dizer que minha primeira tentativa para resolver algo com programação muito provavelmente será usando Python.
  • Esse é um dos principios do Zen of Python que diz muito. Simples! Eu quero uma ferramenta pra botar minhas ideias em prática.

  • Frameworks ajudam demais a colocar ideias em prática. É tudo uma questão de abstração. É código para ajudar a criar código. Você tem todo uma base que ajuda a criar uma aplicação mais facilmente.
  • Essa frase de Isaac Newton tem muito a ver com computação. A gente está sempre sobre ombros de alguém. E isso é bom, assim podemos enxergar muito longe e criar coisas que não seriam viáveis se não fossem os ombros de gigantes. Frameworks funcionam como ombros.
  • Django é um framework web escrito em Python. Vou falar bastante dele a partir de agora.
  • Django foi criado para gerenciar um site jornalistico. Um dos principais requisitos era que fosse possível criar e fazer mudanças rápidas. Depois de um tempo o Django ele se tornou maduro o suficiente para ser usado por outras pessoas e foi liberado para o público. Hoje ele é o framework web mais popular pra Python

    E o nome? Alguem sabe de onde vem?
    Vem do músico de jazz Django Reinhardt
  • O Django usa a conhecida arquitetura MVC

    Model – a representação dos dados
    View – como as coisas são exibidas
    Controller – pega a entrada do usuário, pega informações dos modelos, processa e devolve pra view
  • Vou mostrar um pouco de código
  • Vamos criar uma aplicação para gerenciar uma coleção musical

    Esse é o comando do django para iniciar um novo projeto.
  • São criados esses arquivos

    manage.py – não deve ser modificado. Traz vários comandos para ajudar no desenvolvimento, por exemplo, syncdb, runserver, etc.
    settings.py – configurações do rpojeto
    urls.py – configuração das urls.
  • Configurando o settings.
  • Comando para criar uma nova aplicação

    Um projeto django é composto de várias aplicações.
  • Cria uma pasta collection.

    Models.py – definição dos modelos da aplicação
    Tests.py – implementação dos testes
    Views.py – definição das views da aplicação.
  • Como ficou o modelo album
  • Adicionando app no settings
  • Criando tabelas
  • Primeira página: add/ para adicionar um novo album.
  • Configurando o arquivo urls
  • Settings.py
  • Settings.py
  • Settings.py
  • Settings.py
  • Precisamos de um formulário para adicionar algo num site. Vamos criar um.
  • Form de acordo com o modelo.
  • Define o modelo
  • Exclui o campo cover, não quero adicionar a capa manualmente.
  • View para adicionar um novo album
  • Configurações no settings para definir onde ficarão os templates.
  • Template add.
  • Rodando o servidor
  • resultado
  • Proxima página, o index.
  • Adicionando uma url
  • View index
  • Template index
  • resultado
  • Ultima url, deletar.
  • Mais uma url.
  • Settings.py
  • Settings.py
  • Settings.py
  • Settings.py
  • Settings.py
  • Settings.py
  • View delete
  • resultado
  • Resultado com css
  • Vou colocar o código aqui.
  • Vocês viram o basico. Django tem muita mais coisa. A internet tem muito material, vale a pena procurar.
  • Sempre que necessário você pode usar todo o poder do Python. A função get_covers mostrou isso. Ali não tem nada especifico do Django.
  • O Django é uma ótima ferramenta. Ele simplifica muita tarefa chata e agiliza muita coisa tambem.
  • O Django é muito popular e sua comunidade é sempre ativa. Existem inúmeras aplicações criadas por terceiros prontas para serem usadas e vários desenvolvedores ajudando no projeto.
  • Enfim, Django é uma ótima escolha.
  • Transcript

    • 1. DESENVOLVIMENTO WEB USANDO DJANGO
    • 2. YURIMALHEIROS@
    • 3. YURIMALHEIROS @GMAIL.COM
    • 4. TECNOLOGIA
    • 5. TECNOLOGIA?
    • 6. TECNOLOGIA?
    • 7. SIMPLE IS BETTER THAN COMPLEX
    • 8. FRAMEWORKS
    • 9. ” “SE VI MAIS LONGE FOI POR ESTAR SOBRE OS OMBROS DE GIGANTES
    • 10. UM POUCO DE HISTÓRIA...
    • 11. MODEL VIEW CONTROLLER
    • 12. MODEL TEMPLATE CONTROLLER
    • 13. MODEL TEMPLATE VIEW
    • 14. CODIFICANDO
    • 15. django-admin startproject mymusic
    • 16. mymusic manage.py settings.py urls.py
    • 17. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'db.sqlite', 'USER': '‘, 'PASSWORD': '‘, 'HOST': '‘, 'PORT': '‘, } } settings.py
    • 18. manage.py startapp collection
    • 19. collection models.py tests.py views.py
    • 20. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 21. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 22. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 23. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 24. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 25. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 26. from django.db import models class Album(models.Model): artist = models.CharField(max_length=200) name = models.CharField(max_length=200) year = models.IntegerField() cover = models.URLField(verify_exists=False, blank=True) def __unicode__(self): return "%s by %s" % (self.name, self.artist) collection/models.py
    • 27. INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'collection', ) settings.py
    • 28. manage.py syncdb
    • 29. add/
    • 30. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^add/$', collection_views.add), ) urls.py
    • 31. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^add/$', collection_views.add), ) urls.py
    • 32. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^add/$', collection_views.add), ) urls.py
    • 33. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^add/$', collection_views.add), ) urls.py
    • 34. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^add/$', collection_views.add), ) urls.py
    • 35. from django.forms import ModelForm from collection.models import Album class AlbumForm(ModelForm): class Meta: model = Album exclude = (‘cover’,) collection/forms.py
    • 36. from django.forms import ModelForm from collection.models import Album class AlbumForm(ModelForm): class Meta: model = Album exclude = (‘cover’,) collection/forms.py
    • 37. from django.forms import ModelForm from collection.models import Album class AlbumForm(ModelForm): class Meta: model = Album exclude = (‘cover’,) collection/forms.py
    • 38. from django.forms import ModelForm from collection.models import Album class AlbumForm(ModelForm): class Meta: model = Album exclude = (‘cover’,) collection/forms.py
    • 39. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 40. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 41. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 42. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 43. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 44. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 45. def add(request): if request.method == 'POST': form = AlbumForm(data=request.POST) if form.is_valid(): album = Album() album.name = form.cleaned_data['name'] album.artist = form.cleaned_data['artist'] album.year = form.cleaned_data['year'] album.cover = get_cover_url(album.artist, album.name) album.save() collection/views.py
    • 46. else: form = AlbumForm() return render_to_response('add.html', {'form' : form}, context_instance=RequestContext(request)) collection/views.py
    • 47. else: form = AlbumForm() return render_to_response('add.html', {'form' : form}, context_instance=RequestContext(request)) collection/views.py
    • 48. else: form = AlbumForm() return render_to_response('add.html', {'form' : form}, context_instance=RequestContext(request)) collection/views.py
    • 49. else: form = AlbumForm() return render_to_response('add.html', {'form' : form}, context_instance=RequestContext(request)) collection/views.py
    • 50. else: form = AlbumForm() return render_to_response('add.html', {'form' : form}, context_instance=RequestContext(request)) collection/views.py
    • 51. settings.py import os PROJECT_PATH = os.path.dirname(os.path.abspath(__file__)) TEMPLATE_DIRS = ( os.path.join(PROJECT_PATH, 'templates'), )
    • 52. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 53. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 54. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 55. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 56. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 57. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 58. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 59. <form action="." method="post" enctype="multipart/form-data"> {% csrf_token %} {% for field in form %} <div class="fieldWrapper"> {{ field.errors }} {{ field.label_tag }}: {{ field }} </div> {% endfor %} <p><button type="submit">Adicionar</button></p> </form> templates/add.html
    • 60. manage.py runserver
    • 61. /
    • 62. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), ) urls.py
    • 63. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), ) urls.py
    • 64. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), ) urls.py
    • 65. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), ) urls.py
    • 66. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 67. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 68. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 69. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 70. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 71. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 72. def index(request): albums = Album.objects.all().order_by('name') return render_to_response('index.html', {'albums' : albums}, context_instance=RequestContext(request)) collection/views.py
    • 73. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> </p> {% endfor %} templates/index.html
    • 74. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> </p> {% endfor %} templates/index.html
    • 75. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> </p> {% endfor %} templates/index.html
    • 76. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> </p> {% endfor %} templates/index.html
    • 77. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> </p> {% endfor %} templates/index.html
    • 78. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> </p> {% endfor %} templates/index.html
    • 79. delete/
    • 80. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 81. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 82. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 83. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 84. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 85. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 86. from django.conf.urls.defaults import * from collection import views as collection_views urlpatterns = patterns('', url(r'^$', collection_views.index, name='album_index'), url(r'^add/$', collection_views.add), url(r'^delete/(?P<album_id>d+)/$', collection_views.delete, name='album_delete'), ) urls.py
    • 87. def delete(request, album_id): album = Album.objects.get(pk=album_id) album.delete() return redirect('album_index') collection/views.py
    • 88. def delete(request, album_id): album = Album.objects.get(pk=album_id) album.delete() return redirect('album_index') collection/views.py
    • 89. def delete(request, album_id): album = Album.objects.get(pk=album_id) album.delete() return redirect('album_index') collection/views.py
    • 90. def delete(request, album_id): album = Album.objects.get(pk=album_id) album.delete() return redirect('album_index') collection/views.py
    • 91. {% for album in albums %} <p> {% if album.cover %} <img src="{{album.cover}}" /> {% endif %} {{album.name}}<br /> {{album.artist}}<br /> <a href={% url album_delete album.pk %}>apagar</a> </p> {% endfor %} templates/index.html
    • 92. GITHUB.COM/ YURIMALHEIROS
    • 93. BÁSICO
    • 94. PYTHON
    • 95. FERRAMENTA
    • 96. COMUNIDADE
    • 97. BOA ESCOLHA :)
    • 98. DÚVIDAS?

    ×