From 80cc3695542f45529fb2d24295f395cf1b2cb6d5 Mon Sep 17 00:00:00 2001
From: Julio Biason Entendendo Django
- Agenda
-
-
-
- Projeto
@@ -127,24 +117,24 @@
Outras coisas do manage.py
-
-
-
- python manage.py syncdb
: Cria as
- tabelas necessárias e adiciona os dados
- necessários.python manage.py makemigrations
:
- Verifica alterações em modelos e gera regras
- para conversão do banco.python manage.py shell
: Shell de
- acesso ao Django (na verdade, abre um
- interpretador Python com um monte de coisas já
- carregadas/configuradas)python manage.py runserver
: Roda
- um server de desenvolvimento.Outras coisas do manage.py
+
+
+
+ python manage.py syncdb
: Cria as
+ tabelas necessárias e adiciona os dados
+ necessários.python manage.py makemigrations
:
+ Verifica alterações em modelos e gera regras
+ para conversão do banco.python manage.py shell
: Shell de
+ acesso ao Django (na verdade, abre um
+ interpretador Python com um monte de coisas já
+ carregadas/configuradas)python manage.py runserver
: Roda
+ um server de desenvolvimento.
-all_fruits = Order.objects.filter(products__name__like='fruit')
+all_fruits_in_orders = Order.objects \
+ .filter(products__name__like='fruit') \
+ .distinct()
related_name
.
Queries onde todas as condições devem ser
- satisfeitas podem ser feitas passando mais
- parametros em filter
.
Queries onde todas as condições devem ser
+ satisfeitas podem ser feitas passando mais
+ parametros em filter
.
+
all_expensive_fruits = Order.objects.filter(
products__name__like='fruit',
price__gt=1000)
-
-
Para queries com OR, deve-ser usar o objeto Q
.
Para queries com OR, deve-ser usar o objeto Q
.
+
all_fruits_or_expensive = Order.objects.filter(
Q(products__name__like='fruit') |
Q(price__gt=1000))
-
-
Redirects servem para indicar que o browser deve se + direcionar à outra URL.
+ +Para referenciar URLs de outras apps (ou mesmo da
+ mesma app), deve-ser usar o método
+ reverse
.
+from django.core.urlresolvers import reverse
+from django.shortcuts import redirect
+
+def view(request):
+ # do stuff
+ return redirect(reverse('app:func'))
+
+
+ Bem parecido com o módulo unittest
do Python
+ padrão.
+import random
+
+from django.test import TestCase
+
+class RandomTest(TestCase):
+ def test_random(self):
+ """Check if random numbers return random numbers."""
+ self.assertTrue(random.randint(255) != 0)
+
+ Testes podem acessar qualquer coisa (desde que importados):
+ +
+from django.test import Client
+from django.test import TestCase
+
+class RequestTest(TestCase):
+ def test_retrieve_page(self):
+ client = Client()
+ response = client.get('/')
+ self.assertTrue('success!' in response.content)
+ self.assertEquals(response.status_code, 200)
+ self.assertTrue('variable' in response.context)
+ self.assertEqual(response.context['variable'], 'success')
+
+