Você está na página 1de 3

DESIGN DE PROJETOS:

"figma.com"

um projeto django é constituído por várias 'aplicações' diferentes, cada uma faz
uma coisa no site (como uma para lidar com as contas dos usuários)

MODELOS
um modelo diz ao django como deve trabalhar com cada tipo de dado em nossa
aplicação. Um feed de notícias tem que ter os dados do nome do usuário (um texto
mais curto), a mensagem (um texto mais longo), um timestamp para mostrar a data de
publicação, uma imagem do perfil do usuário... tudo isso é definido com os modelos

Os modelos são apenas classes do python com as funcionalidades desejadas

fom django.db import models


class Topic(models.Model):
"""Um assunto sobre o qual o usuário está aprendendo."""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)

def __str__(self):
"""Devolve uma reporesentação em string do modelo."""
return self.text

o atributo 'text' é um CharField, ou seja, uma cadeia de caracteres. É usado quando


queremos armazenar uma pequena quantidade de texto, como um nome, endereço ou
título/descrição breve, e possui como parâmetro no CharField um 'max_length=200',
para especificar a quantidade máxima de caracteres a serem armazenados na database
(funciona como um varchar(200))

o atributo 'date_added' é um DateTimeField (um dado que registra uma data e hora).
O argumento 'auto_now_add=True' define esse atributo automaticamente com o valor do
momento em que for criado (data e hora)

OBS.: para ver diferentes tipos de campos para utilizar em um modelo, consultar o
Django Model Field Reference
(https://docs.djangoproject.com/en/1.8/ref/models/fields/).

devemos dizer ao Django qual atributo deve ser usado como default quando exibir
informações sobre o tópico. Ele chama o método '__str__()' para exibir uma
representação simples de um modelo. No caso acima, o método __str()__ devolve a
string armazenada no atributo text (pois o método retorna o texto ('return
self.text')).

ATIVANDO OS MODELOS

para usar os modelos criados, devemos incluir a aplicação em todo o projeto. Para
isso, no 'settings.py', existe uma parte do código chamada:

'INSTALLED_APPS = (
--apps instaladas--
)'

Os modelos são uma tupla (imutável) de quais aplicações devem funcionar em conjunto
para compor todo o projeto, e é aqui que as aplicações criadas devem ser
adicionadas:

'INSTALLED_APPS = (
--trecho omitido--
'django.contrib.staticfiles',
# Minhas aplicações:
'learning_logs',) # nome utilizado no livro

Em vez de adidionar apenas a classe 'Topic', foi adicionado o módulo


'learning_logs' inteiro, para que fique mais fácil controlar as classes criadas sem
ter que adicionar todas uma a uma no 'INSTALLED_APPS'

para criar urls personalizadas, criamos primeiro um aplicativo 'base' com o comando
no CMD 'python manage.py startapp base' (Depois, foi preciso criar um outro
ambiente virtual dentro do studybud e reinstalar o django dentro dele, pois não
reconhecia o django como módulo). Dentro de base, criamos um arquivo 'urls.py', e
dentro dele importamos 'from django.urls import path' e 'from . import views', e
dentro de base/urls.py criamos uma lista:

urlpatterns = [
path('', views.home, name='home'),
path('room/', views.room, name='room'),

Nessa lista, criamos novas urls "a url root foi chamada de 'home', e a url
'root/room/' foi chamada 'room', e chamam funções dentro de base/views.py

No base/views.py, importamos 'from django.shortcuts import render' e 'from


django.http import HttpResponse'. Criamos então duas funções:

def home(request):
return HttpResponse('Esta é a minha home page')

def room(request):
return HttpResponse('Esta é a minha página de salas')

No fim das contas, o base/urls.py diz que, quando a url for apenas a root (a main
page), irá chamar a função 'view.home', que é um HttpResponse que exibe 'Esta é a
minha homepage'

********** ::ESTUDAR:: **********

<form method="POST" action="" ></form>

{% csrf_token %}

from django.forms import ModelForm


from .models import Room
class RoomForm(ModelForm):
class Meta:
model = Room
fields = '__all__'

def createRoom(request):
if request.method == 'POST':
print(request.POST)
form = RoomForm()
context = {'form': form}
return render(request, 'base/room_form.html', context)

Você também pode gostar