Criando um novo projeto DJango

Arquitetura

Instalação do Python e PIP

Windows

Baixar e instalar o Python (http://www.python.org)

 

Linux

O linux já possui suporte ao Python e ao PIP. Basta instalá-los pelo gerenciador de pacotes.

sudo apt-get install python python-pip

Virtualenv

Virtualenv é uma ferramenta para criar ambientes isolados do Python.

Permite uso de diversas versões do Python e dos pacotes dependendo do projeto.

 

Virtualenv Wrapper

Um conjunto de scripts para facilitar o a criação e uso dos virtualenvs.

Linux

Windows

Instalando o Virtualenv

pip install virtualenv
pip install virtualenvwrapper
pip install virtualenv
pip install virtualenvwrapperwin

Configurando o ambiente

Para projetos Django, recomenda-se a utilização de virtualenv

mkvirtualenv projeto1
workon projeto1

Instalando o Django

pip install django

Para a instalação de qualquer pacote Python, basta apenas executar o comando install no gerenciador de pacotes (pip):

Criando um novo projeto

Para criar um novo projeto basta executar o comando:

django-admin startproject projeto1

Arquivos do Projeto

O comando irá criar uma pasta chamada projeto1 com os seguintes arquivos:

  • __init__.py - Modulo padrão do pacote (necessário para reconhecer a pasta como pacote Python)
  • manage.py - Script para realizar tarefas administrativas no projeto
  • settings.py - Configurações do projeto (BD, apps, etc.)
  • urls.py - Configuração das URLs
  • wsgi.py - Ponto de entrada do projeto (primeiro arquivo a ser carregado pelo servidor para executar o projeto no ambiente de produção)

Criando uma aplicação

python manage.py startapp agenda

O comando irá criar uma pasta chamada agenda com seguintes itens:

  • __init__.py - Modulo padrão do pacote (necessário para reconhecer a pasta como pacote Python)
  • admin.py - Configuração para o django-admin
  • models.py - Contém as classes de domínio da aplicação.
  • tests.py - Contém os testes específicos da aplicação
  • views.py - Contém as visões do aplicação
  • migrations (pasta) - Código de migração do banco de dados

Estrutura do projeto1

Configuração do Django

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'agenda',
]

Adicionar o app ao settings.py do projeto

Um simples Olá mundo

Editar o arquivo agenda/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse('Hello World')

Um simples Olá mundo

Editar o arquivo projeto1/urls.py

from django.conf.urls import url
from django.contrib import admin
import agenda.views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', agenda.views.index),
]

Um simples Olá mundo

Executando o projeto

python manage.py runserver

Um simples Olá mundo

Criando um cadastro

Criando um cadastro

Incluir no arquivo agenda/models.py

class Contato(models.Model):
    nome = models.CharField(max_length=100)
    email = models.EmailField()

Criando um cadastro

Criar migração de estrutura do banco de dados

python manage.py makemigrations
python manage.py migrate

Aplicar migrações ao banco de dados

Criando um cadastro

from .models import Contato

def listar(request):
    contatos = Contato.objects.all()
    return render(request, 'agenda/contato_listar.html',
                  {'itens': contatos})

Acrescentar ao agenda/views.py

Criando um cadastro

from django.shortcuts import redirect
from django.core.urlresolvers import reverse
from django.forms.models import modelform_factory

ContatoForm = modelform_factory(Contato, fields=('__all__'))

def adicionar(request):
    if request.method == 'POST':
        form = ContatoForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect(reverse('contato_listar'))
    else:
        form = ContatoForm()
    return render(request, 'agenda/contato_form.html', {'form': form})

Acrescentar ao agenda/views.py

Criando um cadastro

<table width="100%">
  <tr>
    <th>Nome</th>
    <th>E-mail</th>
  </tr>
{% for item in itens %}
  <tr>
    <td>{{ item.nome }}</td>
    <td>{{ item.email }}</td>
  </tr>
{% empty %}
  <tr><td colspan="2" align="center">Lista vazia</td></tr>
{% endfor %}
</table>
<a href="{% url 'contato_adicionar' %}">Adicionar</a>

Criar arquivo agenda/templates/agenda/contato_listar.html

Criando um cadastro

Criar o arquivo

agenda/templates/agenda/contato_adicionar.html

<form action="" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<button type="submit">Adicionar</button>
</form>

Criando um cadastro

Modificar arquivo projeto1/urls.py

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^agenda/', include('agenda.urls')),
]

Criando um cadastro

from django.conf.urls import url
from .views import *

urlpatterns = [
    url(r'^$', listar, name='contato_listar'),
    url(r'adicionar$', adicionar, name='contato_adicionar'),
]

Criar arquivo agenda/urls.py

Criando um cadastro

Executar projeto e abrir o endereço: http://localhost:8000/agenda

Made with Slides.com