diff --git a/django.html b/django.html index 669a0e2..19dde38 100644 --- a/django.html +++ b/django.html @@ -48,16 +48,6 @@

Entendendo Django

-
-

Agenda

- - -
-

Projeto

@@ -127,24 +117,24 @@
-
-

Outras coisas do manage.py

- - -
+
+

Outras coisas do manage.py

+ + +
@@ -374,7 +364,9 @@ fruit = Product.objects.get(name='fruit')

-all_fruits = Order.objects.filter(products__name__like='fruit')
+all_fruits_in_orders = Order.objects \
+                       .filter(products__name__like='fruit') \
+                       .distinct()
                         
@@ -408,31 +400,31 @@ print Products.order_set.all() related_name.

-
-

Queries com AND

+
+

Queries com AND

-

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)
-						
-
+ +
-
-

Queryes com OR

+
+

Queries com OR

-

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))
-						
-
+ +

Q

@@ -638,6 +630,75 @@ def free(value):
+ +
+
+

URLs/Redirects

+ +

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'))
+
+                        
+
+
+ +
+
+

Testes

+ +

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')
+                        
+
+