Escolar Documentos
Profissional Documentos
Cultura Documentos
"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
def __str__(self):
"""Devolve uma reporesentação em string do modelo."""
return self.text
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
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
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'
{% csrf_token %}
def createRoom(request):
if request.method == 'POST':
print(request.POST)
form = RoomForm()
context = {'form': form}
return render(request, 'base/room_form.html', context)